MongoDB 使用 $push 更新匹配条件的数组元素
MongoDB update an array element matching a condition using $push
我第一次同时使用 Python 和 Mongo,在文档中我找不到我需要的东西。
所以我的数据对象看起来像这样
{
"_id" : ObjectId("54d372597d74523bc6991b9b"),
"id_user" : "2000001",
"date_registrated" : "2015-01-21 12:11:28.185",
"user" : "Bogdan",
"gender" : "M",
"email" : "a@a.com",
"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@a.com",
"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 和 Mongo,在文档中我找不到我需要的东西。
所以我的数据对象看起来像这样
{
"_id" : ObjectId("54d372597d74523bc6991b9b"),
"id_user" : "2000001",
"date_registrated" : "2015-01-21 12:11:28.185",
"user" : "Bogdan",
"gender" : "M",
"email" : "a@a.com",
"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@a.com",
"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"}})