Вы не можете использовать как $set
и $push
в том же выражении обновления как вложенные операторы.
Правильный синтаксис для использования update operators следующим образом:
{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}
где <operator1>, <operator2>
может быть любой из списка операторов обновления, указанные here.
Для добавления нового элемента в массив достаточно одного оператора $push
. Вы можете использовать метод findByIdAndUpdate
обновления, чтобы вернуть измененный документ как
Employeehierarchy.findByIdAndUpdate(employeeparent._id,
{ "$push": { "childrens": employee._id } },
{ "new": true, "upsert": true },
function (err, managerparent) {
if (err) throw err;
console.log(managerparent);
}
);
Использование оригинального update()
метод, синтаксис
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);
}
);
, в котором функция обратного вызова принимает аргументы (err, raw)
где
err
это ошибка если произошел
raw
является полным ответом Монго
Так как вы хотите, чтобы проверить измененный документ, я предлагаю вам использовать функцию findByIdAndUpdate
поскольку метод update()
не даст вам измененный документ, просто полный результат записи от монго.
Если вы хотите, чтобы обновить поле в документе и добавить элемент в массив, в то же время, то вы можете сделать
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);
}
);
выше обновит name
поле для «Foo» и добавьте идентификатор сотрудника в массив childrens
.
Если я проверить менеджер печати console.log (managerparent + «кк») я получаю сообщение об ошибке, как uncaughtException: managerparent не определен – MMR
Thsnks chridam это wrkd. – MMR
все еще у меня есть еще один вопрос для вас :), если вы в порядке. – MMR