Как обновить, не вставляя подполе в Mongo?

mongodb

174 просмотра

1 ответ

У меня есть документы вроде

{"_id":100, "age": {"bob": 20, "jack": 30}}

и я только хочу обновить существующего человека с его возрастом, но если я обновляю несуществующего пользователя:

db.products.update({ _id: 100 }, {$set: { "age.tom": 10 }}),

Монго создаст "Том" и установит возраст, который не является моим ожиданием.

Документ по теме: https://docs.mongodb.com/manual/tutorial/update-documents/

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

Любой способ сделать обновление, пока не upsertдля подполя?

Автор: kelviN Источник Размещён: 08.11.2019 11:00

Ответы (1)


2 плюса

Решение
db.example.update({ "age.tom":{$exists:true} },{ $set: { "age.tom": 10 }})

если вы хотите "_id"в качестве фильтра,

db.example.update({"_id" : 100, "age.tom":{$exists:true} },{ $set: { "age.tom": 10 }})
Автор: Smita Ahinave Размещён: 20.08.2016 08:02
Вопросы из категории :
32x32