MongoDB数据模型-一个文档可以链接到多个不同状态的文档



我目前处理的一个问题是mongodb的数据结构。我有两个集合:服务和用户。每个用户的服务将处于不同的状态,管理员可以为每个用户更改服务的状态。

服务集合:

[
{
_id: ObjectID(...),
name: ...,
status: [
{
userId: ObjectID(...),
status: 0
},
{
userId: ObjectID(...),
status: 1
},
{
userId: ObjectID(...),
status: 4
}
]
}
]

用户集合:

[
{
_id: ObjectID(...),
name: ...,
email: ...,
phone: ....
}
]

这种结构适用于少量数据。然而,让我们想象一下,我们有10000个用户和1000个服务,每个服务都必须包括所有用户及其状态。我认为这不是很好。因此,我正在寻找一些简洁、美观的解决方案。感谢您的阅读。

似乎必须有一个用户服务状态的概念,它可以存储在专用集合中。它将有一个用户id、一个服务id和一个状态。在这种情况下,状态可以独立于用户或服务进行管理,并且解决方案的可扩展性要高得多。该系列看起来像:

[
{
_id: ObjectId(...),
userId: ObjectId(...),
serviceId: ObjectId(...)
status: 1
}
]

如果在查询服务时需要更多的数据,您可以考虑将这些数据嵌入到服务状态对象中的用户或服务对象中(基本上是去规范化和冗余(,但要使这些数据与其他集合保持同步,需要付出一些努力:

[
{
_id: ObjectId(...),
user: {
_id: ObjectId(...),
name: ...
},
service: {
_id: ObjectId(...),
name: ...
}
status: 1
}
]

其中CCD_ 1和CCD_;参考文献";涉及用户和服务集合中的数据;真理之源";用于数据。

最新更新