mongodb - Mgo 拉取更新不起作用

标签 mongodb go mgo

我正在尝试使用 Go 中的 mgo 库实现以下功能:

db.artists.update(
    {_id: ObjectId("534944125117082b30000001")}, 
    {
        $pull: {
            studies: {
                _id: ObjectId("53d53591718a522e04000001")
            }
    }
})

这基本上是对艺术家收藏的更新,我试图根据它的 id 字段从研究数组中删除研究。

所以在 go 中我使用:

pullQuery := &bson.M{"studies": &bson.M{"_id": bson.ObjectIdHex("53d53fd6718a521954000001")}}
err = col.Update(&bson.M{"_id": "534944125117082b30000001"}, &bson.M{"$pull": pullQuery})

但这似乎行不通。如果我直接在 RoboMongo(mongodb 客户端实用程序)中运行第一个版本,它工作正常,但是对于 mgo,它似乎不起作用。它给我错误:“未找到”。

谢谢

编辑

修改了以下go代码,它只运行文件:

err = col.UpdateId(bson.ObjectIdHex("534944125117082b30000001"), &bson.M{"$pull": pullQuery})

最佳答案

您的第一个 $pull 示例中的 ObjectId 与 go 代码不匹配。您确定您使用的是正确的 _id 吗?

关于mongodb - Mgo 拉取更新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984029/

相关文章:

mongodb - 防止 bson.ObjectIdHex 中的运行时 panic

go - 为什么用户定义的时间位置为零

python - Golang : Trying to create a name, 年龄元组,具有类似于 python 的 zip 功能

mongodb - 使用 golang bson 从 mongo 获取整个元素的问题,而不是只返回子元素

MongoDb:如何从 .gz 文件导入转储数据?

go - 如何修复GoLang的LDAP过滤器操作错误?

使用集群 mongo 实例时 mongodb i/o 超时

集合中每个文档的 MongoDB : how to set a new field equal to the value of another field,

node.js - 处理 NodeJS 异步行为

mongodb - DynamoDB 或 SimpleDB 可以替代我的 MongoDB 用例吗?