Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB合并非预期文档_Mongodb - Fatal编程技术网

MongoDB合并非预期文档

MongoDB合并非预期文档,mongodb,Mongodb,我正在创建一个mongo聚合管道,通过一个列表字段(doors)展开文档。然后,我根据单个门中属性的条件进行过滤 如何将过滤后的结果重新组合在一起,以使结果保持其原始形式 以下是我的收藏中的文档示例: { "uuid": "00000000-0000-0000-0000-000000000000", "name": "Building1", "doors": [ { "doorUuid": "11111111-1111-1111-1111-111111111111",

我正在创建一个mongo聚合管道,通过一个列表字段(doors)展开文档。然后,我根据单个门中属性的条件进行过滤

如何将过滤后的结果重新组合在一起,以使结果保持其原始形式

以下是我的收藏中的文档示例:

{ "uuid": "00000000-0000-0000-0000-000000000000",
  "name": "Building1",
  "doors": [
    {
     "doorUuid": "11111111-1111-1111-1111-111111111111",
     "creationTime": null
    },
    {
     "doorUuid": "22222222-2222-2222-2222-222222222222",
     "creationTime": 1560194908942
    },
    {
     "doorUuid": "33333333-3333-3333-3333-333333333333",
     "creationTime": 1560195008942
    }
  ]
}

例如,如果我想过滤掉所有creationTime为空的门,我想要的输出将具有上面相同的结构,但只有两个门。

with
$push

db.collection.aggregate([
  {
    $unwind: "$doors"
  },
  {
    $match: {
      "doors.creationTime": {
        $ne: null
      }
    }
  },
  {
    $group: {
      _id: "$_id",
      name: {
        $last: "$name"
      },
      uuid: {
        $last: "$uuid"
      },
      doors: {
        $push: "$doors"
      }
    }
  }
])