该$lookup阶段具有以下语法:
为了在输入文档中的字段与“ joined”集合的文档中的字段之间执行相等匹配,该
$lookup阶段具有以下语法:
该$lookup文件包含以下字段:
| 领域 | 描述 |
|---|---|
| 从 | 在同一数据库中指定要执行联接的集合。该 |
| localField | 指定从输入文档到 |
| foreignField | 指定 |
| 如 | 指定要添加到输入文档中的新数组字段的名称。新的数组字段包含 |
该操作将对应于以下伪SQL语句:
请参阅以下示例:
如果执行涉及多个视图的聚合(例如with $lookup或)$graphLookup,则这些视图必须具有相同的排序规则。
$lookuporders使用以下文档创建一个集合:
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使用以下文档创建一个集合: