mongodb写个三表连接查询实例
时间: 2023-03-27 22:03:47 浏览: 142
Python中的MongoDB基本操作:连接、查询实例
好的,以下是一个 MongoDB 的三表连接查询实例:
假设我们有三个集合:users、orders 和 products。users 集合存储用户信息,orders 集合存储订单信息,products 集合存储商品信息。我们需要查询出每个用户的订单信息以及订单中包含的商品信息。
首先,我们需要在 orders 集合中查询每个用户的订单信息,可以使用 $lookup 操作符连接 users 集合和 orders 集合:
db.users.aggregate([
{
$lookup: {
from: "orders",
localField: "_id",
foreignField: "user_id",
as: "orders"
}
}
])
这个查询会返回一个包含每个用户信息以及他们的订单信息的文档。现在我们需要在每个订单中查询包含的商品信息,可以再次使用 $lookup 操作符连接 products 集合和 orders 集合:
db.users.aggregate([
{
$lookup: {
from: "orders",
localField: "_id",
foreignField: "user_id",
as: "orders"
}
},
{
$unwind: "$orders"
},
{
$lookup: {
from: "products",
localField: "orders.product_id",
foreignField: "_id",
as: "orders.products"
}
},
{
$group: {
_id: "$_id",
name: { $first: "$name" },
orders: { $push: "$orders" }
}
}
])
这个查询会返回一个包含每个用户信息以及他们的订单信息和订单中包含的商品信息的文档。注意,我们使用了 $unwind 操作符将 orders 数组展开,然后再次使用 $lookup 操作符连接 products 集合和 orders 集合。最后,我们使用 $group 操作符将结果按照用户分组。
阅读全文