使用
MongoDB
的$lookup操作符进行查询
MongoDB
的$lookup操作符可以在一个集合中查询另一个集合。如果需要查询多层嵌套的文档,可以进行多次$lookup操作。具体步骤如下:
定义要查询的第二个集合的连接关系,例如:
$lookup:
from: "orders",
localField: "customer_id",
foreignField: "customer_id",
as: "orders"
其中,本地字段为第一个集合中的字段,外部字段为第二个集合中的字段,
as
字段定义了要嵌套到第一个集合中的字段名。
对第二个集合进行$lookup操作,例如:
$lookup:
from: "items",
localField: "orders.item_id",
foreignField: "_id",
as: "items"
其中,本地字段为第二个集合中的字段,外部字段为第三个集合中的字段。
注意,嵌套层数不宜过多,过多嵌套容易导致查询性能下降。
完整示例代码如下:
db.customers.aggregate([
$lookup:
from: "orders",
localField: "customer_id",
foreignField: "customer_id",
as: "orders"
$lookup:
from: "items",
localField: "orders.item_id",
foreignField: "_id",
as: "items"