$lookup
)或$graphLookup
操作符,将多个集合的数据进行关联。MongoDB多表连接查询的方法有以下几种:
1、内联查询(Inline Queries)
使用$lookup
操作符进行内联查询,可以连接两个集合并返回匹配的文档。
语法示例:
```
{
$lookup:
{
from: <collection2>,
localField: <field1>,
foreignField: <field2>,
as: <outputArray>
}
}
```
from
指定要连接的另一个集合。
localField
和foreignField
指定连接条件,即两个字段相等。
as
指定输出结果的数组名称。
2、左连接(Left Join)
使用$lookup
操作符结合{from: <collection2>, localField: <field1>, foreignField: <field2>, as: <outputArray>}
和{from: <collection2>, localField: <field3>, foreignField: <field4>, as: <outputArray2>}
进行左连接查询。
语法示例:
```
{
$lookup:
{
from: <collection2>,
localField: <field1>,
foreignField: <field2>,
as: <outputArray>
},
$unwind: "$<outputArray>"
},
{
$lookup:
{
from: <collection2>,
localField: <field3>,
foreignField: <field4>,
as: <outputArray2>
},
$unwind: "$<outputArray2>"
}
```
第一个$lookup
用于连接第一个集合和第二个集合,第二个$lookup
用于连接第一个集合和第三个集合。
$unwind
操作符用于展开数组,以便后续操作。
3、右连接(Right Join)
使用$lookup
操作符结合{from: <collection2>, localField: <field1>, foreignField: <field2>, as: <outputArray>}
和{from: <collection3>, localField: <field3>, foreignField: <field4>, as: <outputArray2>}
进行右连接查询。
语法示例:
```
{
$lookup:
{
from: <collection2>,
localField: <field1>,
foreignField: <field2>,
as: <outputArray>
},
$unwind: "$<outputArray>"
},
{
$lookup:
{
from: <collection3>,
localField: <field3>,
foreignField: <field4>, as: <outputArray2>
},
$unwind: "$<outputArray2>"
}
```
第一个$lookup
用于连接第一个集合和第二个集合,第二个$lookup
用于连接第一个集合和第三个集合。
$unwind
操作符用于展开数组,以便后续操作。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/475345.html