【发布时间】:2015-08-27 05:48:30
【问题描述】:
以下是我要更新的文档的架构:
{
"field1" : "value1",
"field2" : "value2",
"field3" : {
"list" : [
{
"content" : "valueA",
"start" : "valueA",
"group" : "valueA"
},
{
"content" : "valueB",
"start" : "Needs_Updation",
"group" : "valueB"
},
]
}
我想更新文档的“Needs_Updation”值。
我尝试了以下方法:
db.collection.update({
"field1":"value1" ,
"field3.list" :{"$elemMatch" : {"content" : "valueB","group": "valueB" }}},
{"$set":{"field3.list.$.start" : "Updated_Value"}}
)
还有一个更简单的查询,例如:
db.collection.update({
"field1":"value1" ,
"field3.list.content":"valueB",
{"$set":{"field3.list.$.start" : "Updated_Value"}}
)
我正在使用 PyMongo,有没有办法更新这种文档?
【问题讨论】:
-
我刚刚在 shell 中尝试了你的代码,它运行良好。什么对你不起作用?
-
在您的第二个查询中,您在匹配时错过了
}。它应该像 -db.collection.update({ "field1":"value1" , "field3.list.content":"valueB"}, {"$set":{"field3.list.$.start" : "Updated_Value"}}) )否则你的查询是正确的。 -
我也不明白为什么查询在我的 shell 上不起作用,找不到任何其他方式
-
@AsadBaqri 您使用的是什么版本的 MongoDB 服务器?