sql >> データベース >  >> NoSQL >> MongoDB

MongoDBの正確な要素配列のフィールドを更新します

    2つの概念を利用する必要があります。mongodbの位置演算子と、更新するエントリの数値インデックスを使用することです。

    位置演算子を使用すると、次のような条件を使用できます。

    {"heroes.nickname": "test"}
    

    次に、見つかった配列エントリを次のように参照します。

    {"heroes.$  // <- the dollar represents the first matching array key index
    

    「items」の2番目の配列エントリを更新する必要があるため、配列キーには0のインデックスが付けられます。これが、キー1です。

    だから:

    > db.denis.insert({_id:"43434", heroes : [{ nickname : "test",  items : ["", "", ""] }, { nickname : "test2", items : ["", "", ""] }]});
    > db.denis.update(
        {"heroes.nickname": "test"}, 
        {$set: {
            "heroes.$.items.1": "new_value"
        }}
    )
    > db.denis.find()
    {
        "_id" : "43434", 
        "heroes" : [
            {"nickname" : "test", "items" : ["", "new_value", "" ]},
            {"nickname" : "test2", "items" : ["", "", "" ]}
        ]
    }
    


    1. mongodbバージョン3.0.0クライアントrobomongomongovue

    2. ハウツー:MapReduceジョブにサードパーティライブラリを含める

    3. Mongoグループとプッシュ:すべてのフィールドをプッシュ

    4. 異なる結果を示すMongoDBのfind()メソッドとfindOne()メソッド