MongoDB-在Pymongo中的嵌套数组中更新或创建对象
这是我的收藏MongoDB-在Pymongo中的嵌套数组中更新或创建对象,mongodb,pymongo,nested-loops,Mongodb,Pymongo,Nested Loops,这是我的收藏 { "_id" : '50001', "data" : [ { "name" : "ram", "grade" : 'A' }, { "name" : "jango", "grade" : 'B'
{
"_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
你快到了:
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
)
db.YourCollection.update(
{'_id':'50001',Mongo嵌套更新,因此您应该知道下面更新值的位置或$
db.collecionName.update(
{'_id': '50001', "data.name" :"jango"},
{'$set':{'data.1.grade':'A'}}, upsert=true)
或
但我只需要创建一个新条目,如{'name':'jango','grade':'a'}如果我搜索的名称不存在,则返回到数组。但是我需要搜索,而不考虑数组索引。只有我能够知道名称。如果搜索名称不存在,这将不会为数组创建新条目。为此,您应该尝试mongo map reduce,它将帮助您。
db.collecionName.update(
{'_id': '50001', "data.name" :"jango"},
{'$set':{'data.$.grade':'A'}}, upsert=true)