【问题标题】:Updating value in array object [duplicate]更新数组对象中的值[重复]
【发布时间】:2015-06-23 13:58:34
【问题描述】:

我正在尝试使用 mongoose 和 nodejs 更新我的 mongodb 架构数组中的对象的值。

我的模型是:

{
"_id": ObjectId("557eecd687cff9281040efe5"),
"products": [
    {
        "productId": "6849500",
        "qty": 2,
        "_id": ObjectId("557eef13101aef4c101af513")
    }
]
}

我想更新“productId”上的“products”数组“qty”值过滤

【问题讨论】:

  • 提示:{$set:{'products.$.qty':'qty_value '}.

标签: arrays node.js mongodb mongoose


【解决方案1】:

尝试以下更新,它使用 $ positional operator 来标识要更新的数组中的元素,而无需明确指定该元素在数组中的位置。由于位置 $ 运算符充当与查询文档匹配的第一个元素的占位符,因此数组字段必须作为查询文档的一部分出现,因此您需要 products 数组字段在您的查询:

db.collection.update(
    {"products._id": ObjectId("557eef13101aef4c101af513")}, 
    {"$set": {"products.$.qty": 8} }
)  

【讨论】:

    【解决方案2】:

    您必须使用运算符$

    ModelName.update({
      //find the document
    },{
      products.$.qty : //value
    });
    

    ALITER

    也许你必须创建一个新对象

    {
        "productId": "6849500",
        "qty": //some new value,
        "_id": ObjectId("557eef13101aef4c101af513")
    }
    

    然后更新文档,

    我个人认为第二种方式会更加安全可靠。

    【讨论】:

    • 好的。我猜不支持嵌套的$。谢谢,我会更新我的答案!
    猜你喜欢
    • 2021-12-21
    • 2022-11-24
    • 2021-11-11
    • 2020-02-04
    • 2018-08-23
    • 2018-06-26
    • 2015-05-12
    • 2020-09-20
    • 2019-04-18
    相关资源
    最近更新 更多