首页 > 解决方案 > 具有多个数组的 Mongo 聚合文档

问题描述

在 $match 和 $project 之后,我有这个文档结构:

{ 
    "_id" : ObjectId("5a764de08337490ff57c7dc1"), 
    "Lote" : "id", --> Unique Index
    "Planning" : [
         {MainField:10, field1:value, field2:value}, 
         {MainField:20,...},
         {MainField:30...}
    ], 
    "Request" : [
         {MainField:10, field1:value, field2:value}, 
         {MainField:20,...},
         {MainField:30...}],
    ]
}

计划和请求是数组。

我喜欢 $unwind 两个数组,然后只保留 Planning.MainField === Request.MainField 的文档

首先,我想到的解决方案是加入两个阵列,这是一个“长期”解决方案。

如果可能的话,我想玩聚合。

谢谢。

标签: mongodbaggregation-framework

解决方案


您可以使用$expr 来匹配文档中的字段

db.collection.aggregate([
  { "$unwind": "$Planning" },
  { "$unwind": "$Request" },
  { "$match": { "$expr":
    { "$eq": ["$Planning.MainField", "$Request.MainField"] }
  }}
])

推荐阅读