MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak prawidłowo wykonać upsert/aktualizację zbiorczą w MongoDB?

Twoja składnia tutaj jest w zasadzie poprawna, ale ogólne wykonanie było błędne i powinieneś "oddzielić" akcję "upsert" od innych modyfikacji. W przeciwnym razie będą one „zderzyły się” i spowodują błąd, gdy wystąpi „upsert”:

LineupPointsRecord.native(function (err,collection) {

    var bulk = collection.initializeOrderedBulkOp();

    // Match and update only. Do not attempt upsert
    bulk.find({
        "teamId": lineUpPointsGeneralRecord.teamId,
        "round": 0
    }).updateOne({
        "$inc": { "lfPoints": roundPoints },
        "$push": { "roundPoints": roundPoints }
    });

    // Attempt upsert with $setOnInsert only
    bulk.find({
        "teamId": lineUpPointsGeneralRecord.teamId,
        "round": 0
    }).upsert().updateOne({
        "$setOnInsert": lineUpPointsGeneralRecord
    });

    bulk.execute(function (err,updateResult) {
        sails.log.debug(err,updateResult);
    });
});

Upewnij się, że sails-mongo to najnowsza wersja obsługująca operacje zbiorcze prawidłowo, dzięki włączeniu najnowszego natywnego sterownika węzła. Najnowsza wersja obsługuje sterownik v2, co jest w porządku.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Utrzymuj i spłukuj - Doctrine i MongoDB

  2. Odpowiednik $elemMatch w danych wiosennych mongodb

  3. Wysyłanie zapytań z połączeniami i filtrami w Mongoose

  4. Zalecany sposób na usunięcie obiektu w MongoDB na podstawie trasy

  5. Czy Python może zapisywać do bazy danych i aktualizować Meteor?