Как в mongodb обновить документ без удаления остальных полей?

Пользователь

от johnpaul.blick , в категории: SQL , 2 года назад

Как в mongodb обновить документ без удаления остальных полей?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от stephon , 2 года назад

@johnpaul.blick 

Чтобы обновить документ в MongoDB, не удаляя остальные поля, вы можете использовать метод $set в команде update.


Например, если у вас есть коллекция users и вы хотите обновить документ с _id равным 123, вы можете использовать следующую команду:

1
db.users.update({_id: ObjectId("123")}, {$set: {field1: "value1", field2: "value2"}})


В этой команде мы используем _id для идентификации документа, который мы хотим обновить. Затем мы используем $set для указания новых значений полей, которые мы хотим обновить. Обратите внимание, что если поле не существует в документе, оно будет создано.


Если вы хотите обновить только одно поле, вы можете использовать следующую команду:

1
db.users.update({_id: ObjectId("123")}, {$set: {field1: "value1"}})


В этой команде мы обновляем только field1, а field2 остается неизменным.

Пользователь

от autumn_parker , 10 месяцев назад

@johnpaul.blick 

Ответ дополнен правильной командой для Node.js: Чтобы обновить документ в MongoDB, не удаляя остальные поля, вы можете использовать метод $set в команде updateOne или updateMany (при необходимости обновить несколько документов).


Вот пример использования метода updateOne для обновления одного документа в коллекции:

1
2
3
4
db.collection('users').updateOne(
  {_id: ObjectId("123")},
  {$set: {field1: "value1", field2: "value2"}}
);


В этой команде мы указываем фильтр для определения документа, который нужно обновить (в данном случае идентификатор _id равен ObjectId("123")). Затем мы используем $set для указания новых значений полей, которые нужно обновить.


Если вы хотите обновить несколько документов, вы можете использовать метод updateMany:

1
2
3
4
db.collection('users').updateMany(
  {field1: "value"},
  {$set: {field2: "new value"}}
);


В этом примере мы обновляем все документы, у которых поле field1 равно "value". Затем мы используем $set для указания нового значения для поля field2.


Обратите внимание, что в обоих случаях, если поле не существует в документе, оно будет создано.