Mongodb 聚合和搜索嵌套文档

Mongodb 聚合和搜索嵌套文档,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,假设我有一个文档集合,看起来像这样: { "_id": "123", "arr": [ { "num": 1, "_id": "231" } ] }, { "_id": "234", "arr": [ { "num": 3, "_id": "321" }, {

假设我有一个文档集合,看起来像这样:

{ "_id": "123", "arr": [ { "num": 1, "_id": "231" } ] },
{ "_id": "234", "arr": [ { "num": 3, "_id": "321" }, { "num": 1, "_id": "294" } ] },
{ "_id": "345", "arr": [ { "num": 3, "_id": "653" }, { "num": 1, "_id": "732" } ] },
{ "_id": "456", "arr": [ { "num": 2, "_id": "123" } ] },
我如何编写一个查询来搜索“num”为1的所有“arr”对象,并得到如下结果:

{ "num": 1, "_id": "231" },
{ "num": 1, "_id": "294" },
{ "num": 1, "_id": "732" }
我曾尝试使用$unwind,但至今未成功。

尝试以下方法:

  • 筛选文档以仅传递匹配的文档
    arr.num==1
  • 使用
    $unwind
  • 过滤文档
    arr.num==1
  • 将输入文档替换为
    arr
    文档
  • 输出:

    [
      {
        "_id": "231",
        "num": 1
      },
      {
        "_id": "294",
        "num": 1
      },
      {
        "_id": "732",
        "num": 1
      }
    ]
    
    [
      {
        "_id": "231",
        "num": 1
      },
      {
        "_id": "294",
        "num": 1
      },
      {
        "_id": "732",
        "num": 1
      }
    ]