Обновление всех полей в документе с использованием объекта Javascript - PullRequest
0 голосов
/ 07 января 2019

Я хочу обновить все поля в документе MongoDB, и у меня есть объект Javascript, который содержит все эти поля. Я мог бы легко напечатать каждое поле для обновления, но это кажется большой ручной работой и не пригодной для повторного использования. Я хотел сделать что-то вроде ниже, но это создает объект, содержащий все новые данные поля в документе с именем newData.

Я пытался использовать JSON.stringify для переменной, но формат не подходит для обновления.

var newData = {
   _id:ObjectId("53245234..."),
   id: 88888,
   firstData: "someData",
   secondData: 787855,
   thirdData: [ 45,17,12,234]
};
var collection = db.get('CollectionToUpdate');

//strip out dB id so as not to overwrite it, possibly not needed
if ("_id" in newData) {
  delete newData["_id"];
}

//find the correct document based on program generated id and update
collection.update({id: newData.id}, {
   newData
})

1 Ответ

0 голосов
/ 07 января 2019

Если вы доверяете, у newData не будет ключей, которые вы не собираетесь (например, операторы обновления), это должно работать:

var collection = db.get('CollectionToUpdate');
collection.update({id: newData.id}, newData)

Обратите внимание, что это заменяет документ. Я предполагаю, что это то, что вы имели в виду под «обновить все поля». update не заменяет "_id".

Документация для update

...