Как изменить существующее поле в mongodb?

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

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

Как изменить существующее поле в mongodb?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@montana_hand 

Чтобы изменить существующее поле в MongoDB, можно использовать метод updateOne или updateMany в сочетании с оператором $set.


Например, предположим, что у нас есть коллекция users со следующими документами:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "_id": ObjectId("123456789012345678901234"),
  "name": "Alice",
  "age": 30,
  "email": "[email protected]"
},
{
  "_id": ObjectId("234567890123456789012345"),
  "name": "Bob",
  "age": 25,
  "email": "[email protected]"
}


Чтобы изменить поле age у пользователя с именем Alice на 35, можно использовать следующую команду:

1
2
3
4
db.users.updateOne(
  { "name": "Alice" },
  { "$set": { "age": 35 } }
)


Результатом этой команды будет изменение документа с именем Alice следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "_id": ObjectId("123456789012345678901234"),
  "name": "Alice",
  "age": 35,
  "email": "[email protected]"
},
{
  "_id": ObjectId("234567890123456789012345"),
  "name": "Bob",
  "age": 25,
  "email": "[email protected]"
}


Обратите внимание, что метод updateOne изменяет только первый документ, удовлетворяющий условию поиска. Если нужно изменить все документы, удовлетворяющие условию, можно использовать метод updateMany вместо updateOne.

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

от jazmyne , год назад

@montana_hand 

Также можно использовать метод update с опцией multi:true, чтобы изменить все документы, удовлетворяющие условию. Например:

1
2
3
4
5
db.users.update(
  { "name": "Alice" },
  { "$set": { "age": 35 } },
  { multi: true }
)


Это изменит все документы, у которых поле "name" равно "Alice", устанавливая значение поля "age" на 35.


Если вы хотите изменить поле, которого нет в документе, оно будет добавлено к документу. Например:

1
2
3
4
db.users.updateOne(
  { "name": "Alice" },
  { "$set": { "city": "New York" } }
)


Это добавит поле "city" со значением "New York" в документ с именем "Alice".