在$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的文档
首先,我想到的解决方案是连接两个数组,这是一个“长期”解决方案。
如果可能的话,我想玩聚合游戏。
谢谢。

最佳答案

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

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

09-27 23:17