gpt4 book ai didi

mongodb - MongoLab 通过 CURL/Golang-http 使用 HTTP PUT 删除多个集合不起作用

转载 作者:IT王子 更新时间:2023-10-29 02:23:58 27 4
gpt4 key购买 nike

我试图通过其 HTTP 接口(interface)删除托管在 MongoLab 服务中的 MongoDb 数据库中集合中的多个文档。这是我在尝试实现它时使用的 CURL 请求

 curl -H "Content-Type: application/json" -X PUT  "https://api.mongolab.com/api/1/databases/mydb/collections/mycoll?q={\"person\":\"554b3d1ae4b0e2832aeeb6af\"}&apiKey=xxxxxxxxxxxxxxxxx"

我基本上希望从集合中删除具有匹配查询的所有文档。位于 http://docs.mongolab.com/restapi/#view-edit-delete-document 的 Mongolab 文档建议 “在正文中指定一个空列表等同于删除与查询匹配的文档。” 。但是我如何在 PUT 请求正文中发送空列表?

这是我用来实现上述PUT请求的Golang代码

client := &http.Client{}
postRequestToBeSentToMongoLab, err := http.NewRequest("PUT","https://api.mongolab.com/api/1/databases/mydb/collections/mycoll?q={\"person\":\"554b3d1ae4b0e2832aeeb6af\"}&apiKey=xxxxxxxxxxxxxxxxx",nil )
postRequestToBeSentToMongoLab.Header.Set("Content-Type", "application/json") //http://stackoverflow.com/questions/24455147/go-lang-how-send-json-string-in-post-request
responseFromMongoLab, err := client.Do(postRequestToBeSentToMongoLab)

它返回 null 在这两种情况下(Golang 和 CURL 的 PUT 请求的情况)。如何让它工作,以便它删除所有匹配查询的文档?

最佳答案

我想您需要传递一个空的 json 数组作为 PUT 消息的有效负载。使用 curl,它会是这样的:

curl -H "Content-Type: application/json" -X PUT -d '[]' "https://api.mongolab.com/api/1/databases/mydb/collections/mycoll?q={\"person\":\"554b3d1ae4b0e2832aeeb6af\"}&apiKey=xxxxxxxxxxxxxxxxx"

在Go代码中,你需要这样写:

client := &http.Client{}
req, err := http.NewRequest(
"PUT",
"https://api.mongolab.com/api/1/databases/mydb/collections/mycoll?q={\"person\":\"554b3d1ae4b0e2832aeeb6af\"}&apiKey=xxxxxxxxxxxxxxxxx",
bytes.NewBuffer("[]")
)
req.Header.Set("Content-Type", "application/json")
reply, err := client.Do(req)

关于mongodb - MongoLab 通过 CURL/Golang-http 使用 HTTP PUT 删除多个集合不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30125018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com