Sen iç içe operatörler ile aynı güncelleme ifadede hem $set
ve $push
kullanamaz.
update operators kullanmak için doğru sözdizimi aşağıdaki gibidir: <operator1>, <operator2>
güncelleme operatörler listesinin herhangi birinden olabilir
{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}
here belirtilmiş.
Diziye yeni bir öğe eklemek için, tek bir $push
işleci yeterli olacaktır. Eğer
Employeehierarchy.findByIdAndUpdate(employeeparent._id,
{ "$push": { "childrens": employee._id } },
{ "new": true, "upsert": true },
function (err, managerparent) {
if (err) throw err;
console.log(managerparent);
}
);
orijinal update()
yöntemi kullanarak olarak değiştirilmiş belge dönmek findByIdAndUpdate
güncelleme yöntemini kullanabilirsiniz, sözdizimi geri arama işlevi argüman alıp hangi
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);
}
);
olduğunu (err, raw)
nerede
err
herhangi
raw
değiştirilmiş belgeyi kontrol etmek istediğimizden
, sana update()
yöntemle beri findByIdAndUpdate
işlevini kullanın öneririm Mongo tam yanıttır gerçekleştiyse hatadır değiştirilmiş belgeyi vermeyecek, sadece mongo'dan tam yazma sonucu. Belgedeki bir alanı güncelleştirmek ve aynı zamanda bir diziye bir öğe eklemek isterseniz
o zaman
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);
}
);
yukarıda name
alanı "foo" güncelleyecektir yapabilirsiniz ve çalışan kimliğini childrens
dizisine ekleyin.
: managerparent tanımlanmadı – MMR
Thsnks o wrkd chridam böylece sorgu gibi olabilir. – MMR
hala bir sorum var :), eğer sorun yok. – MMR