Могу ли я обновить разные документы одним запросом в MongoDB? - PullRequest
0 голосов
/ 22 декабря 2018

Я хочу обновить разные документы в MongoDB всего одним запросом.Моя существующая коллекция баз данных выглядит следующим образом:

[ { "_id":"1", "name": null, "Age": null }, { "_id":"2", "name":null, "Age":null}, { "_id":"3", "name":null, "Age": null } ]

У меня есть следующий JSON:

[ { "_id":"1", "name":"Arav", "Age":"25" }, { "_id":"2", "name":"Mohan", "Age":"64" }, { "_id":"3", "name":"Nishant", "Age":"23" } ]

Я хочу знать, возможно ли обновить все существующие 3 документа соответствующими данными извыше JSON с одним запросом.Что-то вроде:

db.products.insert( [ { "_id":"1", "name":"Arav", "Age":"25" }, { "_id":"2", "name":"Mohan", "Age":"64" }, { "_id":"3", "name":"Nishant", "Age":"23" } ] )

Проблема в том, что он возвращает повторяющуюся ошибку и не обновляет документ, если он уже существует.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Можно вставить 3 или более документов, используя один запрос, используя insertMany вместо insert , как показано ниже -

db.products.insertMany ([{"_id": "1", "name": "Arav", "Age": "25"}, {"_id": "2", "name": "Mohan", "Age": "64"}, {" _id ":" 3 "," name ":" Nishant "," Age ":" 23 "}]).

insertMany возвращает документ, содержащий:
- логическое значение, подтвержденное как true, если операция выполнялась с проблемой записи, или false, если запись была отключена.
- массив _id для каждого успешно вставленного документа id

0 голосов
/ 22 декабря 2018

Вы можете использовать bulkWrite операция

Предположим, у вас есть этот JSON, который необходимо обновить

const array = [
  {
    "_id": "1",
    "name": "Arav",
    "Age": "25"
  },
  {
    "_id": "2",
    "name": "Mohan",
    "Age": "64"
  },
  {
    "_id": "3",
    "name": "Nishant",
    "Age": "23"
  }
]

Теперь с bulkWrite запрос

Model.bulkWrite(
  array.map((data) => 
    ({
      updateOne: {
        filter: { _id: data._id },
        update: { $set: { name: data.name, Age: data.age } }
      }
    })
  )
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...