我有一个像这样的集合
{
"_id" : ObjectId("5446757568567546456"),
"name" : "Duck-trailer",
"data" : [
{
"date" : "1-1-2015",
"oldPrice" : 10,
"price" : 15
},
{
"date" : "2-1-2015",
"oldPrice" : 10
"price" : 12
}
]
}
所以我尝试按id和date选择,然后通过选择嵌套在数据对象中的日期来更新价格。
我的查询无效,收到MongoError: cannot use the part..
myModel.update({_id: id, 'data.$.date':'2-1-2015'}, {'$set': {'data.$.price': 100}},
function(err,result) {
})
答案 0 :(得分:1)
匹配时你不需要位置操作符。
db.collection.update({"data.date":"2-1-2015"},{$set:{"data.$.price":100}})
如果您输入的日期与之匹配,则会将价格设置为100。