Я хочу обновить несколько документов.
Мой текущий документ,
Документ Аккаунт
{
"_id" : "5cbd96aca1a6363473d4g8745",
"contact" : [
"5cbd96aca1a6363473d4a968",
]
},
{
"_id" : "5cbd96aca1a6363473d4g8746",
"contact" : [
"5cbd96aca1a6363473d4z7632",
]
}
Мне нужно ниже вывода,
обновить массив контактов с помощью другого _id .
Документ Аккаунт
{
"_id" : "5cbd96aca1a6363473d4g8745",
"contact" : [
"5c98833f98770728a7047f1a",
"5cbd96aca1a6363473d4a968",
]
},
{
"_id" : "5cbd96aca1a6363473d4g8746",
"contact" : [
"5caddf78b8c0645402090536",
"5cbd96aca1a6363473d4z763",
]
}
3 ответа
Используйте $addToSet
или $push
, чтобы отправить идентификатор с bulk update
.
Вы можете использовать обновление с upsert. Он обновит документ, если он существует, а если нет, то создаст новый. например:
//Make a obj to set
var contacts = {
id: req.body.id,
contactIds: req.body.contactIds,
};
req.app.db.models.ModelsName.update(
{
//if you want multiple fields to be update
$and: [{ id: contacts.id }, { contactIds: { $in: contacts.contactIds } }]
},
//Set the above obj
{ $set: contacts },
{ upsert: true },
(err, result) => {
if (err) {
console.log(err.message)
}
console.log("Updated successfully")
})
Это просто ссылка. Измените соответственно ваше использование.
Вы можете использовать метод Bulk.find.update () для обновления всех соответствующих документов. пример: var bulk = db.items.initializeUnorderedBulkOp (); bulk.find ({status: "D"}) .update ({$ set: {status: "I", points: "0"}}); bulk.find ({item: null}) .update ({$ set: {item: "TBD"}}); bulk.execute ( ) ; код >
Похожие вопросы
Новые вопросы
node.js
Node.js - это неблокирующая асинхронная среда ввода-вывода, основанная на событиях, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на клиенте, так и на стороне сервера, и, следовательно, выигрывают от повторного использования кода и отсутствия переключения контекста.