MongoDB是一种文档型的NoSQL数据库,支持多表联查,可以实现多表之间的关联查询。
1.使用$lookup进行多表联查
使用$lookup操作符可以实现多表之间的关联查询,语法如下:
db.collection.aggregate([
{
$lookup:
{
from: ,
localField: ,
foreignField: ,
as:
举例:
假设有两个集合,一个是“user”,存储用户信息,一个是“order”,存储订单信息,要查询每个用户的订单信息,可以使用以下查询语句:
db.user.aggregate([
{
$lookup:
{
from: "order",
localField: "user_id",
foreignField: "user_id",
as: "order_info"
}
}
])
2.使用$unwind进行多表联查
使用$unwind操作符可以实现多表之间的关联查询,语法如下:
db.collection.aggregate([
{
$unwind:
}
])
举例:
假设有两个集合,一个是“user”,存储用户信息,一个是“order”,存储订单信息,要查询每个用户的订单信息,可以使用以下查询语句:
db.user.aggregate([
{
$lookup:
{
from: "order",
localField: "user_id",
foreignField: "user_id",
as: "order_info"
}
},
{
$unwind: "$order_info"
}
])
3.使用$match进行多表联查
使用$match操作符可以实现多表之间的关联查询,语法如下:
db.collection.aggregate([
{
$match:
}
])
举例:
假设有两个集合,一个是“user”,存储用户信息,一个是“order”,存储订单信息,要查询每个用户的订单信息,可以使用以下查询语句:
db.user.aggregate([
{
$lookup:
{
from: "order",
localField: "user_id",
foreignField: "user_id",
as: "order_info"
}
},
{
$unwind: "$order_info"
},
{
$match: {
"order_info.order_status": "completed"
}
}
])
MongoDB可以使用$lookup、$unwind、$match等操作符实现多表之间的关联查询,可以很方便地查询出多个表之间的数据。