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

mongoとupsertの配列を更新します

    あなたが望むものを達成するためのオプションがあります。

    // step 1
    var writeResult = db.collection.update({
        "providerId" : ID,
        "providers" : {
            $elemMatch : {
                "merchantId" : MERCHANTID
            }
        }
    }, {
        $set : {
            "providers.$.merchantId" : MERCHANTID,
            "providers.$.name" : NAME,
            "providers.$.valid" : true,
            "providers.$.data" : DATA
        }
    });
    
    
    // step 2
    if (!writeResult.nModified) { // if step 1 has succeeded on update, nModified == 1, else nModified == 0
        db.collection.update({
            "providerId" : ID,
            "providers.merchantId" : {
                $ne : MERCHANTID        // this criteria is necessary to avoid concurrent issue
            }
        }, {
            "$push" : {
                "prividers" : {
                    "merchantId" : MERCHANTID,
                    "name" : NAME,
                    "valid" : true,
                    "data" : DATA
                }
            }
        });
    }
    



    1. $graphLookupのObjectIdを文字列に一致させる

    2. mongodb c#特定のフィールドドット表記を選択

    3. MongoDBを使用した間違った距離計算

    4. MongoDB:forEachとfetch + each