MongoDB
 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $in оператор за заявка

  2. Не може да се покажат само точките в определен диапазон (кръг) с помощта на функцията .getBounds() (листовка)

  3. MEAN-Stack записва масив в MongoDB с mongoose

  4. Spark към MongoDB чрез Mesos

  5. Контейнерно управлявана MongoDB връзка в Liberty + Spring Data