【问题标题】:Mgo pull update not workingMgo拉更新不起作用
【发布时间】:2014-07-27 18:12:34
【问题描述】:

我正在尝试使用 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})

【问题讨论】:

    标签: mongodb go mgo


    【解决方案1】:

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

    【讨论】:

    • 哦,我讨厌这种事情发生。是的,我在查询文档时忘记使用 bson.ObjectIdHex 函数。谢谢!
    猜你喜欢
    • 2017-05-22
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    相关资源
    最近更新 更多