【问题标题】:use $addToSet to add an item inside an inner-array, to a specific field使用 $addToSet 将内部数组中的项目添加到特定字段
【发布时间】:2018-01-25 21:41:39
【问题描述】:

所以,我有这个收藏。我正在尝试将值为 9 的 responseId 添加到 responseIds 数组中,其中 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

我怎样才能做到这一点?

【问题讨论】:

    标签: mongodb mongoose aggregation-framework


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多