使用$ set更新嵌套的对象数组失败

时间:2016-12-30 17:55:06

标签: javascript node.js mongodb mongoose

我有一个像这样的集合

{ 
    "_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) {
})

1 个答案:

答案 0 :(得分:1)

匹配时你不需要位置操作符。

db.collection.update({"data.date":"2-1-2015"},{$set:{"data.$.price":100}})

如果您输入的日期与之匹配,则会将价格设置为100。

相关问题