【问题标题】:Updating an object inside of an array MongoDB Meteor更新数组 MongoDB Meteor 中的对象
【发布时间】:2016-01-10 09:28:05
【问题描述】:

我正在尝试更新数组内的对象。这是我的结构:

"_id": "ubtQP9EjmxhXS5z98",
  "name": "My Data",
  "desc": "What songs should I play at my wedding?",
  "private": false,
  "suggestions": [
    {
      "name": "Vote 1",
      "link": "http://www.website.com/",
      "votes": 0
    },
    {
      "name": "Vote 2",
      "votes": 0
    }
  ],
  "author": "tovd9Win3C3fntgyR",
  "createdAt": "2016-01-10T08:36:37.014Z"

我想将“建议”中第一个对象的投票更新为 1。目前我有以下代码,但它不起作用。

Polls.update("ubtQP9EjmxhXS5z98", {
    $inc: {suggestions.$.votes: 1},
});

【问题讨论】:

    标签: javascript mongodb meteor mongodb-query


    【解决方案1】:

    如果你知道嵌入文档的数组索引,你可以使用dot notation.dot notation.指定嵌入文档的位置

    这里不需要定位 $ 更新运算符,因为您知道要更新的元素的位置。

    定位$ 运算符标识数组中要更新的元素,而无需明确指定该元素在数组中的位置。

    还要使用$ 运算符,数组字段必须作为查询文档的一部分出现。

    Polls.update({"_id": "ubtQP9EjmxhXS5z98"}, {
        "$inc": {"suggestions.1.votes": 1},
    });
    

    【讨论】:

      【解决方案2】:

      在您的查询中,在“查找”部分,您必须指定您在数组中查找的内容。例如:"suggestions.name" = "Vote1"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多