该$lookup
阶段具有以下语法:
为了在输入文档中的字段与“ joined”集合的文档中的字段之间执行相等匹配,该
$lookup
阶段具有以下语法:
该$lookup
文件包含以下字段:
领域 | 描述 |
---|---|
从 | 在同一数据库中指定要执行联接的集合。该 |
localField | 指定从输入文档到 |
foreignField | 指定 |
如 | 指定要添加到输入文档中的新数组字段的名称。新的数组字段包含 |
该操作将对应于以下伪SQL语句:
请参阅以下示例:
如果执行涉及多个视图的聚合(例如with $lookup
或)$graphLookup
,则这些视图必须具有相同的排序规则。
$lookup
orders
使用以下文档创建一个集合:
inventory
使用以下文档创建另一个集合:
在下面的聚合操作orders
系列外,从文件orders
从文件
inventory
使用的字段集合item
从
orders
收集和sku
从外地inventory
收集:
该操作返回以下文档:
该操作将对应于以下伪SQL语句:
$lookup
与阵列¶从MongoDB 3.4开始,如果localField
是一个数组,则可以将数组元素与标量foreignField
进行匹配,而无需
$unwind
舞台。
例如,classes
使用以下文档创建一个示例集合:
members
使用以下文档创建另一个集合:
以下聚合操作将classes
集合中的文档与members
集合相结合,在members
字段上与字段匹配name
:
该操作返回以下内容:
$lookup
与¶一起使用$mergeObjects
在版本3.6中进行了更改: MongoDB 3.6添加了$mergeObjects
运算符以将多个文档组合为一个文档
orders
使用以下文档创建一个集合:
items
使用以下文档创建另一个集合:
以下操作首先使用$lookup
阶段通过item
字段将两个集合合并,然后
$mergeObjects
在中$replaceRoot
使用合并来自items
和的合并文档orders
:
该操作返回以下文档:
$lookup
在版本3.6中进行了更改: MongoDB 3.6添加了对在联接的集合上执行管道的支持,从而允许指定多个联接条件以及不相关的子查询。
orders
使用以下文档创建一个集合: