mongodb 是否有办法对多个集合使用一个Mongoose模式

wko9yo5t  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(177)

我已经为一些实体创建了一个API,每个实体都有自己的模式和相应的集合。

posts
authors
comments

postsauthors之间存在一对一的关系,postscomments之间存在一对多的关系。
现在,数据大小不断增加,我们计划按客户分布数据,以加快查询和聚合。这意味着我们现在将具有以下集合:

<customer_1>_posts
<customer_2>_posts
...
<customer_n>_posts

<customer_1>_authors
<customer_2>_authors
...
<customer_n>_authors

<customer_1>_comments
<customer_2>_comments
...
<customer_n>_comments

由于结构在所有<customer_x>_posts中是通用的,在相应的authorscomments中也是如此,因此我考虑使用通用的模式和API。
现在,是否有一种方法可以使用常见的Mongoose模型,并在保存时根据customer字段的值来决定数据存储的集合?这将使我不必为每个客户端创建单独的模型,也不必创建单独的端点。

mmvthczy

mmvthczy1#

您可以动态地构建模型,也可以动态地查找和使用模型。
创建模型的位置:

for (const customer of customerList) {
  mongoose.model<CompanyDocument>(`${customer}_comments`, schema)
}

然后利用:

CustomerModel = mongoose.model(`${customer}_comments`)

这就是说--虽然这绝对是可行的--但这不是一个好的模式。如果你正确地使用索引,Mongo应该可以扩展到你所有的用例,而不需要增加复杂性。数百万的帖子和评论仍然可以快速和持续,而不需要分成单独的集合。

相关问题