在$ lookup mongo聚合管道中使用对象路径

时间:2019-12-16 14:34:54

标签: mongodb aggregation-framework

对于今天的任务,我正在尝试汇总集合中的文档(我们将其称为collection1,在管道的其中一个阶段中,我尝试使用$ lookup从另一个集合中检索文档(我们将其称为{{1 }})。

collection2对象模型:

collection1

{ "field1": "value1", "field2": "value2" "field3": "value3" } 对象模型:

collection2

我要尝试做的是从{ "field1: "value1", "field2"; "value2", "field3: { "field31": "value31", "field32": "value32" } } 检索文档,其中collection2等于field3.field31 s collection1的值。

我的$ lookup阶段看起来像这样,但是目前似乎不起作用。我没有发现任何线索是否可以奏效,但期待您的答复。

field1

我想避免拥有一个项目或一个小组,然后再次展开和过滤。我的愿望是直接从比赛阶段获得记录,认为这在表现上会更好...

让我知道您对此的想法。

谢谢

1 个答案:

答案 0 :(得分:0)

请尝试:

db.Collection1.aggregate([
   {
     $lookup:
       {
         from: "Collection2",
         localField: "field1",
         foreignField: "field3.field31",
         as: "docs"
       }
  }
])

使用普通的$lookup应该很简单,不能完全确定为什么要创建局部变量并在相同的变量上寻找相等,而且$unwind还将用于数组中可以访问的对象内部元素使用.表示法,就像在编程语言中一样。

参考: $lookup

相关问题