0

次のような MongoDB コレクションがあります。

[
    {
        "title": "Entry 1",
        "visible": true
    },
    {
        "title": "Entry 2",
        "visible": true
    }
]

titleクエリに一致するエントリ (たとえば、 ) を見つけて、そのプロパティarray("title" => "Entry 1")を変更したいと考えています。visible

これは信じられないほど簡単に思えますが、それを行う方法が見つかりませんでした。必要なエントリを配列として返す方法がわかります。オブジェクト全体 (この例よりも多くのプロパティがあります) をフェッチし、小さなことを 1 つ変更してから、オブジェクト全体を再度配置する必要はないように思えます。私は何が欠けていますか?

4

1 に答える 1

1

Read about positional operator

db.pos.insert({arr: [{"title": "Entry 1", "visible": true},     
                     {"title": "Entry 2", "visible": true}]})

db.pos.update({'arr.title': 'Entry 1'}, 
              {$set: {'arr.$.visible': false}})

db.pos.find()
> { "_id" : ObjectId("4fdfb65e9c9cf2c23bbdd669"), "arr" : [     {   "title" : "Entry 1",    "visible" : false },    {   "title" : "Entry 2",    "visible" : true } ] }
于 2012-06-18T23:15:27.983 に答える