这是我的收藏
{
"_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发布于 2014-11-21 22:22:25
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)发布于 2014-11-21 22:19:26
你就快做到了:
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
)Link to documentation
https://stackoverflow.com/questions/27063167
复制相似问题