python - MongoDB 使用 $push 更新匹配条件的数组元素

标签 python mongodb pymongo nosql

我第一次一起使用 Python 和 Mongo,在文档中我找不到我需要的东西。

所以我的数据对象看起来像这样

{
"_id" : ObjectId("54d372597d74523bc6991b9b"),
"id_user" : "2000001",
"date_registrated" : "2015-01-21 12:11:28.185",
"user" : "Bogdan",
"gender" : "M",
"email" : "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="076647662964686a" rel="noreferrer noopener nofollow">[email protected]</a>",
"charachters" : [ 
    {
        "quest_info" : "TUT_var,1421842359 STARTAREA,4 ",
        "char_name" : "Testarion"
    }
]
}

我想将新字段添加到现有字符中,例如

party_user = {"party_name": "name",
               "admin": 0}

最后我想得到这个:

{
"_id" : ObjectId("54d372597d74523bc6991b9b"),
"id_user" : "2000001",
"date_registrated" : "2015-01-21 12:11:28.185",
"user" : "Bogdan",
"gender" : "M",
"email" : "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5f3e1f3e713c3032" rel="noreferrer noopener nofollow">[email protected]</a>",
"charachters" : [ 
    {
        "quest_info" : "TUT_var,1421842359 STARTAREA,4 ",
        "char_name" : "Testarion"
        **"parties" : [{party 1},{party 2}]**
    }
]
}

问题是如何创建查询来实现这一点? 我尝试过类似的方法,但失败得很惨:

db.collection('MyDB').update(
                {"char_name": "Testarion"},
                {"$push": {
                    "charachters": {"parties": party_user}
                }})

我对 Mongo 还很陌生,还没有掌握所有的知识,但是你能告诉我我做错了什么吗?这可能吗?

最佳答案

在该数组元素的更新查询中使用“$”:

db.collection.update(
   {"charachters.char_name": "Testarion"},
   {"$push": {"charachters.$.parties": "party_user"}})

关于python - MongoDB 使用 $push 更新匹配条件的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356373/

相关文章:

python Popen : How do I block the execution of grep command until the content to grep is ready?

python - 如何调整我的输入数据以便在 keras 中与 Conv1D 一起使用?

python - PyGTK、wxPython 还是 Tkinter?

javascript - Meteor:根据现有集合的一个属性创建一个新集合

MongoDB 聚合限制查询

python - 逐行记录函数执行的装饰器

javascript - mongo 更新脚本 : change fields in embedded documents

java - Morphia 中的滤波器嵌入式阵列

mongodb - MongoEngine 指定查询的读取首选项

python - 使用 pymongo $addToSet 嵌套嵌套对象