У меня есть документ:
{ _id: ObjectId("5af06ec792e0fd001f86661d"),
'company': 'ABC',
'profile_set' :
[
{ 'name' : 'nick', 'options' : 0 },
{ 'name' : 'joe', 'options' : 2 },
{ 'name' : 'burt', 'options' : 1 }
]
}
, и я хотел бы добавить новый документ в набор profile_set, если имя еще не существует ИЛИ, если оно существует, обновите существующий.
Так что в этом примере, если я попытался добавить:
{'name' : 'matt', 'options' : 0}
, он должен добавить его, но добавив
{'name' : 'nick', 'options' : 8}
следует обновить его с именем nick , поскольку этот объект уже существует с именем nick
, и он обновит значение других полей до нового.
db.coll.update(
{_id: id, 'profile_set.name': {$ne: 'nick'}},
{$push: {profile_set: {'name': 'nick', 'options': 8}}})
эта команда добавит ее, только если она не существует.Как я могу изменить его так, чтобы, если он существует, обновить его новыми значениями?
update:
Я хочу найти и обновить, как указано выше, любой документ, имеющий 'company': 'ABC'
.