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



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

最佳答案

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

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


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


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

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

关于javascript - 更新数组MongoDB meteor 内部的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34703908/

10-11 05:02
查看更多