首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB -在Pymongo中更新或创建嵌套数组中的对象

MongoDB -在Pymongo中更新或创建嵌套数组中的对象
EN

Stack Overflow用户
提问于 2014-11-21 22:05:30
回答 2查看 1.4K关注 0票数 2

这是我的收藏

代码语言:javascript
复制
{
    "_id" : '50001',
    "data" : 
        [
            {
                    "name" : "ram",
                    "grade" : 'A'
            },
            {
                    "name" : "jango",
                    "grade" : 'B'
            },
            {
                    "name" : "remo",
                    "grade" : 'A'
            }
        ]  
}

在这里,我想更新对应于"name":"jango“的对象,如果没有"jango”,则必须在数组中创建一个新条目。

我可以创建一个新条目,但在“创建或更新”中失败。

我在mongo解释器中尝试过这种方式。

代码语言:javascript
复制
db.MyCollection.update({'_id': '50001', "data.name" :"jango"}, {'$set':{'data': {'data.$.grade':'A'}}}, upsert=true)

但是展示了

代码语言:javascript
复制
not okForStorage
EN

回答 2

Stack Overflow用户

发布于 2014-11-21 22:22:25

Mongo嵌套更新,因此您应该知道下面更新值的位置或$可能会有所帮助

代码语言:javascript
复制
db.collecionName.update(
   {'_id': '50001', "data.name" :"jango"}, 
   {'$set':{'data.1.grade':'A'}}, upsert=true)

代码语言:javascript
复制
   db.collecionName.update(
   {'_id': '50001', "data.name" :"jango"}, 
   {'$set':{'data.$.grade':'A'}}, upsert=true)
票数 1
EN

Stack Overflow用户

发布于 2014-11-21 22:19:26

你就快做到了:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27063167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档