在$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"] }
}}
])