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

Jak zaktualizować wartość tablicy w Mongoose?

Nie możesz używać obu opcji $set i $push w tym samym wyrażeniu aktualizacji, co operatory zagnieżdżone.

Poprawna składnia użycia operatorów aktualizacji jest następująca:

{
   <operator1>: { <field1>: <value1>, ... },
   <operator2>: { <field2>: <value2>, ... },
   ...
}

gdzie , może pochodzić z dowolnej listy operatorów aktualizacji określonej tutaj.

Aby dodać nowy element do tablicy, pojedynczy $push operator wystarczy m.in. możesz użyć findByIdAndUpdate metoda aktualizacji, aby zwrócić zmodyfikowany dokument jako

Employeehierarchy.findByIdAndUpdate(employeeparent._id,
    { "$push": { "childrens": employee._id } },
    { "new": true, "upsert": true },
    function (err, managerparent) {
        if (err) throw err;
        console.log(managerparent);
    }
);

Korzystanie z oryginalnej update() metoda, składnia to

Employeehierarchy.update(
   { "_id": employeeparent._id},
   { "$push": { "childrens": employee._id } },
   function (err, raw) {
       if (err) return handleError(err);
       console.log('The raw response from Mongo was ', raw);
   }
);

w którym funkcja zwrotna otrzymuje argumenty (err, raw) gdzie

  • błąd to błąd, jeśli wystąpił
  • surowe to pełna odpowiedź Mongo

Ponieważ chcesz sprawdzić zmodyfikowany dokument, sugeruję użycie findByIdAndUpdate funkcja od update() Metoda nie da ci zmodyfikowanego dokumentu, tylko pełny wynik zapisu z mongo.

Jeśli chcesz zaktualizować pole w dokumencie i jednocześnie dodać element do tablicy, możesz to zrobić

Employeehierarchy.findByIdAndUpdate(employeeparent._id,
    { 
        "$set": { "name": "foo" },
        "$push": { "childrens": employee._id } 
    } 
    { "new": true, "upsert": true },
    function (err, managerparent) {
        if (err) throw err;
        console.log(managerparent);
    }
);

Powyższe zaktualizuje nazwę pole na "foo" i dodaj identyfikator pracownika do dzieci tablica.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Odległość wydruku MongoDB między dwoma punktami

  2. MongoDB czy CouchDB - nadaje się do produkcji?

  3. Jak określić kolejność właściwości w obiekcie javascript dla indeksu MongoDB w node.js?

  4. W Flask konwertuj obiekt POST na reprezentację odpowiednią dla mongodb

  5. Mongoose find() RegExp dla pola typu Numer