【问题标题】:update nested array of object failed using $set [duplicate]使用 $set 更新嵌套的对象数组失败 [重复]
【发布时间】:2016-12-30 17:55:06
【问题描述】:

我有这样的收藏

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

【问题讨论】:

  • 尝试在查询中不使用 $ 运算符。 'data.date':'2-1-2015'

标签: javascript node.js mongodb mongoose


【解决方案1】:

匹配时不需要位置运算符。

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

这会将价格设置为 100,与您输入的日期匹配。

【讨论】:

  • 为什么是data.date,然后是data.$.price而不是data.price
猜你喜欢
  • 1970-01-01
  • 2015-05-12
  • 2021-12-23
  • 2018-04-26
  • 2018-11-07
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
相关资源
最近更新 更多