Как обновить несколько документов? - PullRequest
1 голос
/ 03 мая 2019

Я хочу обновить несколько документов.
Мой текущий документ,
Документ Учетная запись

{
    "_id" : "5cbd96aca1a6363473d4g8745",
    "contact" : [
         "5cbd96aca1a6363473d4a968",
    ]
},
{
    "_id" : "5cbd96aca1a6363473d4g8746",
    "contact" : [             
         "5cbd96aca1a6363473d4z7632",
    ]
}

Мне нужен вывод ниже,
обновить контактмассив с различными _id .
Документ Счет

{
    "_id" : "5cbd96aca1a6363473d4g8745",
    "contact" : [
         "5c98833f98770728a7047f1a",
         "5cbd96aca1a6363473d4a968",
    ]
},
{
    "_id" : "5cbd96aca1a6363473d4g8746",
    "contact" : [     
         "5caddf78b8c0645402090536",        
         "5cbd96aca1a6363473d4z763",
    ]
}

Ответы [ 3 ]

2 голосов
/ 03 мая 2019

Используйте $addToSet или $push для ввода идентификатора с bulk update.

2 голосов
/ 03 мая 2019

Вы можете использовать обновление с 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")
})

Это просто ссылка. Измените соответственно ваше использование.

0 голосов
/ 03 мая 2019

Вы можете использовать метод 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();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...