devops
devops copied to clipboard
mongo 如何做集合关联,例如订单集合, 云资源集合,资源账单集合
MongoDB是一个非关系型数据库,它不像传统的SQL数据库那样支持JOIN操作来关联多个表。然而,你可以通过使用$lookup操作符在聚合管道中模拟JOIN操作,创建一个新的数组字段,其中包含来自另一个集合的匹配文档。
以下是一个例子,假设我们有订单集合(orders),云资源集合(resources)和资源账单集合(bills),我们想要将这三个集合关联起来:
db.orders.aggregate([
{
$lookup:
{
from: "resources",
localField: "resource_id",
foreignField: "_id",
as: "order_resources"
}
},
{
$lookup:
{
from: "bills",
localField: "bill_id",
foreignField: "_id",
as: "order_bills"
}
}
])
在这个例子中,$lookup操作符先从resources集合中找到与orders集合中的resource_id字段匹配的所有文档,然后将这些文档添加到新的order_resources数组字段中。然后,它又从bills集合中找到与orders集合中的bill_id字段匹配的所有文档,然后将这些文档添加到新的order_bills数组字段中。
需要注意的是,$lookup操作符只能在聚合管道中使用,不能在普通的查询操作中使用。另外,$lookup操作符只能在同一个数据库中的集合之间进行查找,不能在不同数据库的集合之间进行查找。