0

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})
4

1 に答える 1