我正在尝试使用 Go 中的 mgo 库实现以下功能:
db.artists.update(
{_id: ObjectId("534944125117082b30000001")},
{
$pull: {
studies: {
_id: ObjectId("53d53591718a522e04000001")
}
}
})
这基本上是对艺术家收藏的更新,我试图根据它的 id 字段从研究数组中删除一项研究。
所以在我使用:
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})