代码之家  ›  专栏  ›  技术社区  ›  WHITECOLOR

mongodb:在其他文档中按条件查找所有记录

  •  1
  • WHITECOLOR  · 技术社区  · 5 年前

    不知道如何用语言正确地表达任务。

    假设集合中有这样的文档:

      {id:1, type: 'added' },
      {id:1, type: 'completed' },
      {id:2, type: 'added' },
      {id:3, type: 'added' },
    

    查找类型为的所有文档 added 不存在具有相同属性的记录 id completed

    所以它只会发现:

      {id:2, type: 'added' },
      {id:3, type: 'added' },
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Ashh    5 年前

    你可以使用下面的聚合

    db.collection.aggregate([
      { "$group": {
        "_id": "$id",
        "types": { "$push": "$type" }
      }},
      { "$match": {
        "types": {
          "$in": ["added"],
          "$nin": ["completed"]
        }
      }}
    ])
    

    Output

    [
      {
        "_id": 3,
        "types": [
          "added"
        ]
      },
      {
        "_id": 2,
        "types": [
          "added"
        ]
      }
    ]