sql >> Databáze >  >> NoSQL >> MongoDB

Jak aktualizovat hodnotu pole v Mongoose

Nemůžete použít obě $set a $push ve stejném aktualizačním výrazu jako vnořené operátory.

Správná syntaxe pro použití operátorů aktualizace je následující:

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

kde , může být z libovolného zde uvedeného seznamu operátorů aktualizace.

Pro přidání nového prvku do pole stačí $push operátor bude stačit např. můžete použít findByIdAndUpdate aktualizovat metodu vrátit upravený dokument jako

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

Pomocí původního update() syntaxe je

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);
   }
);

ve kterém funkce zpětného volání přijímá argumenty (err, raw) kde

  • chyba je chyba, pokud k nějaké došlo
  • raw je úplná odpověď od Mongo

Protože chcete zkontrolovat upravený dokument, doporučuji vám použít findByIdAndUpdate funkce od update() metoda vám neposkytne upravený dokument, pouze úplný výsledek zápisu z mongo.

Pokud chcete aktualizovat pole v dokumentu a zároveň přidat prvek do pole, můžete to udělat

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);
    }
);

Výše uvedené aktualizuje název pole na "foo" a přidejte ID zaměstnance do childrens pole.



  1. Existuje způsob, jak automaticky objevit novou IP uzlu clusteru v Redis Cluster s Lettuce

  2. MongoDB vs. Cassandra

  3. Co dělá Redis, když mu dojde paměť?

  4. Funkce Mongo Find() nevyloučí _id