这是我的收藏品
{
"_id" : '50001',
"data" :
[
{
"name" : "ram",
"grade" : 'A'
},
{
"name" : "jango",
"grade" : 'B'
},
{
"name" : "remo",
"grade" : 'A'
}
]
}
这里我要更新对象" name":" jango"并且必须创建一个新的数组条目,如果" jango"没有。
我可以创建一个新条目,但未能在"创建或更新"。
我在mongo解释器中尝试过这种方式
db.MyCollection.update({'_id': '50001', "data.name" :"jango"}, {'$set':{'data': {'data.$.grade':'A'}}}, upsert=true)
但显示
not okForStorage
答案 0 :(得分:0)
你几乎在那里:
db.YourCollection.update(
{ '_id':'50001', <-- to find document
'data.name': 'jango' < -- to find element of the array
},
{ '$set': { "data.$.grade" : 'A' } } <-- with .$ you reference array element from first argument
)
答案 1 :(得分:0)
Mongo嵌套更新,因此您应该知道下面的位置或$更新值可能有帮助
db.collecionName.update(
{'_id': '50001', "data.name" :"jango"},
{'$set':{'data.1.grade':'A'}}, upsert=true)
或
db.collecionName.update(
{'_id': '50001', "data.name" :"jango"},
{'$set':{'data.$.grade':'A'}}, upsert=true)