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

MongoDBの配列に埋め込まれたドキュメントを置き換える

    「オブジェクトの配列」パターンを使用しています。位置演算子を使用できます。次のようになります。

    coll.update( {'_id':'2', 'users._id':'2'}, {$set:{'users.$':{ "_id":2,"name":"name6",... }}}, false, true)
    

    私の経験では、オブジェクトが自然なIDを持っている場合、「オブジェクトの配列」パターンは最適ではありません。あなたの場合、これは次のようにモデル化できます:

    {
      "_id" : "2",
      "users" : 
        { "1" : { "name" : "name1", "xyz..." : "xyz1..." }, 
          "2" : { "name" : "name2", "xyz..." : "xyz2..." }
        }
      "name" : "main name"
    }
    

    この場合、ドット表記を使用して、必要なアイテムを簡単に更新できます。

    var newValue = {  "name" : "name6", "xyz..." : "xyz5...", "morefields..." : "fields..." };
    coll.update({_id: 2}, { $set: { "users.2" : newValue } });
    



    1. MongoDB $ divide

    2. 配列内の配列へのMongoプッシュ

    3. ClusterControl-2017年以降のすべての機能のハイライトと改善

    4. Redisトランザクション