【问题标题】:MongoDB update array element of a document by index in nodeJSMongoDB通过nodeJS中的索引更新文档的数组元素
【发布时间】:2017-07-02 13:51:43
【问题描述】:

如何在 Meteor 或 nodeJS 中增加 MongoDB 文档数组的特定元素的值?

说,我有以下文件:

{
    "_id" : "4tP6ewe4Z5kwYA3Je",
    "name" : "chutia",
    "address" : "shonir akhra",
    "itemCount" : "4",
    "items" : [ 
        "3", 
        "4",
        "13", 
        "24"
    ]
}

我需要增加items 数组的n'th 元素。其中n 是一个变量。

【问题讨论】:

    标签: javascript arrays node.js mongodb meteor


    【解决方案1】:

    正确的做法是:

    {$inc: {[`items.${idx}`]: 1}}
    

    其中idx 是数组索引。礼貌MasterAM's comment

    【讨论】:

    • 这种类型的语法是否有名称(或者约定是否记录在某处?) - 即包含模板字符串的数组 - 我以前从未见过它,我花了一段时间才弄清楚我在看什么!我仍然不明白“数组括号”如何/为什么使键名可以接受。 (不过它确实对我有用!)
    • 如果对其他人有帮助,请更新到之前的评论 - 它似乎是一个“计算密钥”,请参阅:stackoverflow.com/a/30969495stackoverflow.com/a/2274327stackoverflow.com/a/19837961
    【解决方案2】:

    如此处记录的https://docs.mongodb.com/manual/reference/operator/update/inc/, 您可以通过点表示法增加数组中的元素。

    以下示例将项目的第一个元素增加 1。

    db.<collection>.update(
     <query>,
     { $inc: { "items.0": 1 } }
    )
    

    【讨论】:

    • 在我的情况下,数组的索引将是一个变量。所以,"items.0" 我猜是行不通的。如何处理?
    • {$inc: {[`items.${idx}`]: 1}},其中idx 是您的索引。
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2014-04-01
    相关资源
    最近更新 更多