使用$ addToSet将内部数组中的项添加到特定字段

时间:2018-01-25 11:41:07

标签: mongodb mongoose aggregation-framework

所以,我有这个系列。我正在尝试将值9的responseId添加到respondIds数组中,其中requestId为2。

[
  {
    _id: 1,
    partsIds: [
      {
        requestId: 1,
        responesIds: [1, 2, 3, 4]
      },
      {
        requestId: 2,
        responesIds: [5, 6, 7, 8]
      }
    ]
  }
]

所以这里的伪代码是:$addToSet:{responseIds:9} where requestId:2

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

所以,我找到了一个有效的解决方案,我还没有给它进行广泛的测试,如果你找到了更好的解决方案,我会非常乐意倾听。

db.collection.update(
    { _id: 1, 'partsIds.requestId': 2 },
    { $addToSet: { 'partsIds.$.responsesIds': 9 } }
);

$被称为positional operator,它获取查询中第一个匹配项的索引(在我的情况下,索引为1),您可以在更新中使用它像这样。