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

Mongoose — zwiększanie wartości w tablicy obiektów

Nie można bezpośrednio zwiększyć wartości w .find Zapytaj, jeśli labelOptions jest tablicą obiektów. Aby było to łatwiejsze, zmień labelOptions wpisz z tablicy obiektów do obiektu:

"labelOptions": {
    "Bob": 112,
    "Billy": 32,
    "Joe": 45
};

Rozważ także użycie .findByIdAndUpdate zamiast .findOneAndUpdate jeśli wysyłasz zapytanie przez _id dokumentu . A potem możesz osiągnąć to, czego chcesz:

Poll.findByIdAndUpdate(
    id,
    {$inc: {`labelOptions.${labelOption}`: 1 }},
    function(err, document) {
    console.log(err);
});

AKTUALIZACJA:Jeśli upierasz się przy używaniu tablicy obiektów dla labelOptions , istnieje obejście:

Poll.findById(
    id,
    function (err, _poll) {

        /** Temporarily store labelOptions in a new variable because we cannot directly modify the document */
        let _updatedLabelOptions = _poll.labelOptions;

        /** We need to iterate over the labelOptions array to check where Bob is */
        _updatedLabelOptions.forEach(function (_label) {

            /** Iterate over key,value of the current object */
           for (let _name in _label) {

               /** Make sure that the object really has a property _name */
               if (_label.hasOwnProperty(_name)) {

                   /** If name matches the person we want to increment, update it's value */
                   if (_name === labelOption) ++_label._name;
               }
           }
        });

        /** Update the documents labelOptions property with the temporary one we've created */
        _poll.update({labelOptions: _updatedLabelOptions}, function (err) {

            console.log(err);
        });
    });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie można utworzyć kopii zapasowej mongodump z --db. Uwierzytelnianie nie powiodło się

  2. MongoDb:agregacja $lookup z filtrowaniem dokumentów zagranicznych

  3. MongoDb Pipeline Aggregation sortowanie poddokumentów

  4. MongoDB - Dodawanie do zbioru i inkrementacja

  5. Otrzymywanie wyjątku podczas wykonywania funkcji block() na obiekcie Mono, który otrzymałem z obiektu ReactiveMongoRepository