MongoDB 中带有额外参数的多对多关系
Many to many relationship with extra parameters in MongoDB
我为一家 window 清洁公司建立了一个管理系统,提供多项服务。我有两个集合:客户和服务。每个客户可以有多个服务,每个服务可以属于多个客户。
据我所知,这是一个基本的多对多关系,应该是这样的
客户
{
_id: 1,
name: 'Customer 1',
services: [101, 102]
}
{
_id: 2,
name: 'Customer 2',
services: [101]
}
服务
{
_id: 101,
name: 'Service 1',
customers: [1, 2]
}
{
_id: 102,
name: 'Service 2',
customers: [1]
}
到目前为止一切顺利。我可以查询客户并获得所有服务,并且可以从服务中获得客户。
但我需要更多数据。对于每个关系,我想要一个开始日期、结束日期(可选)、频率等。
在具有关系数据库的 SQL 环境中,我建立了多对多关系 table,其中包含两个外键和用于附加数据的额外列。 MongoDB 有什么东西可以轻松处理这个问题吗?
我认为 many-to-many 关系 table 与两个外键和用于附加数据的额外列也被推荐用于 MongoDB。
查看下面我的 mongoplayground。
db.Customers.aggregate([
{
$match: {
_id: 1
}
},
{
$lookup: {
from: "Relationships",
localField: "_id",
foreignField: "Customer_id",
as: "docs",
pipeline: [
{
$lookup: {
from: "Services",
localField: "Service_id",
foreignField: "_id",
as: "docs",
pipeline: []
}
},
{
$set: {
docs: {
$first: "$docs.name"
}
}
}
]
}
}
])
我为一家 window 清洁公司建立了一个管理系统,提供多项服务。我有两个集合:客户和服务。每个客户可以有多个服务,每个服务可以属于多个客户。
据我所知,这是一个基本的多对多关系,应该是这样的
客户
{
_id: 1,
name: 'Customer 1',
services: [101, 102]
}
{
_id: 2,
name: 'Customer 2',
services: [101]
}
服务
{
_id: 101,
name: 'Service 1',
customers: [1, 2]
}
{
_id: 102,
name: 'Service 2',
customers: [1]
}
到目前为止一切顺利。我可以查询客户并获得所有服务,并且可以从服务中获得客户。
但我需要更多数据。对于每个关系,我想要一个开始日期、结束日期(可选)、频率等。
在具有关系数据库的 SQL 环境中,我建立了多对多关系 table,其中包含两个外键和用于附加数据的额外列。 MongoDB 有什么东西可以轻松处理这个问题吗?
我认为 many-to-many 关系 table 与两个外键和用于附加数据的额外列也被推荐用于 MongoDB。
查看下面我的 mongoplayground。
db.Customers.aggregate([
{
$match: {
_id: 1
}
},
{
$lookup: {
from: "Relationships",
localField: "_id",
foreignField: "Customer_id",
as: "docs",
pipeline: [
{
$lookup: {
from: "Services",
localField: "Service_id",
foreignField: "_id",
as: "docs",
pipeline: []
}
},
{
$set: {
docs: {
$first: "$docs.name"
}
}
}
]
}
}
])