【发布时间】:2015-12-04 14:39:44
【问题描述】:
我有喜欢的收藏
{
"_id": ObjectId("565ff61d454231a81753866a"),
"tripMembers" : [
{
"username" : "akshay.kumar@gmail.com",
"contact" : null,
"userId" : "1234999",
"accept" : 2,
"_id" : ObjectId("565ff61d454231a817538664")
},
{
"username" : "akshay@gmail.co",
"contact" : null,
"userId" : "",
"accept" : 0,
"_id" : ObjectId("565ff61d454231a817538665")
}]
}
我想更新数组中对象的键。我正在使用以下查询,但它不起作用
db.trips.update({
$or :[
{"tripMembers.username" : "akshay.kumar@gmail.com"},
{"tripMembers.contact": "1234999" }]
},
{"_id" :ObjectId("565ff61d454231a81753866a")},
{$set : {"tripMembers.accept" :1}
})
它给了我错误位置运算符没有从查询中找到所需的匹配项。未扩展更新:tripMembers.$.accept
如果我尝试相同的查询,$or 运算符中只有一个条件,它的工作正常
db.trips.update({
$or :[
{"tripMembers.username" : "akshay.kumar@gmail.com"}
},
{"_id" :ObjectId("565ff61d454231a81753866a")},
{$set : {"tripMembers.accept" :1}
})
不知道,我哪里错了。任何帮助。
【问题讨论】:
-
你想用
{"_id" :ObjectId("565ff61d454231a81753866a")}做什么?看起来您的更新有语法错误,它从那里开始。你的 `$set` 似乎是第三个参数,它应该是第二个。