#node.js #mongoose
#node.js #мангуст
Вопрос:
У меня есть данные, которые выглядят как показано ниже в MongoDB
{
_id: aasdfeasfeasdf,
todo: [
{_todoIde: 333, _with: []},
{_todoIde: 111, _with: []},
]
}
Я хочу, чтобы $addToSet
значение _todoIde: 333
_with
{_todoIde: 333, _with: [aaaa]},
было таким. Как я могу это сделать?
.updateOne(
{_id},
{ $addToSet: {}}
)
Я добрался до документа, но я не могу указать, что _todoIde: 333
для обновления только этого.
Ответ №1:
Позиционный оператор $ идентифицирует элемент в массиве для обновления без явного указания позиции элемента в массиве,
.updateOne(
{ _id: "aasdfeasfeasdf", "todo._todoIde": 333 },
{
$addToSet: {
"todo.$._with": "aaaa"
}
}
)
Ответ №2:
Вы должны добавить дополнительное условие, чтобы указать todoIde
Попробуйте это:
db.collection.update(
{$and:[{_id: typeId},{'todo._todoIde': 333}]},
{$set: { "todo._todoIde.$._with":[a,b,c]}},
);