2016-12-30 75 views
-1

我有这样

{ 
    "_id" : ObjectId("5446757568567546456"), 
    "name" : "Duck-trailer", 
    "data" : [ 
     { 
      "date" : "1-1-2015", 
      "oldPrice" : 10, 
      "price" : 15 
     }, 
     { 
      "date" : "2-1-2015", 
      "oldPrice" : 10 
      "price" : 12 
     } 
     ] 
} 

所以我试图通过ID和日期进行选择,然后通过选择嵌套数据对象中的日期更新价格收集失败。

我的查询没有工作,得到了MongoError: cannot use the part..

myModel.update({_id: id, 'data.$.date':'2-1-2015'}, {'$set': {'data.$.price': 100}}, 
    function(err,result) { 
}) 
+0

在查询中尝试不带$运算符。 'data.date':'2-1-2015' – Veeram

回答

1

错误,同时匹配你不需要的位置操作。

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

这将价格定到100那里是你输入的日期匹配。

+0

为什么'data.date'然后'data。$。price'不是'data.price'? – Cassie