我想设计一个存储文章的文章架构,并且可以记录为其加星标的用户。
这是架构:
var AtricleSchema = new Schema({
name: {
type: String,
required: 'please enter the article name',
trim: true,
index: true
},
author: {
type: Schema.ObjectId,
ref: 'User'
},
//Other field...
starredByUser: [{
type: Schema.ObjectId,
ref: 'User'
}]
});
我不知道保存在文章集合中加载了文章ID的用户是否是一个好习惯。如果有这么多人出演这篇文章怎么办?例如:200,000个用户,文章doc会非常大。它会查询或写文档很慢吗?
例如这些查询:
Article.find({starredByUser:ObjectId('my-user-id')})
或
找到主题文章的前五位用户。
我的设计在这些条件下并不好,必须有更好的解决方案,任何建议或示例都会非常有用!
答案 0 :(得分:0)
这看起来像许多引用/关系的问题。你为什么要使用MongoDB?如果你不能很好地“解决”你的文档问题,我认为MongoDB不是理想的选择。
此外,您的访问模式是什么,例如读取与写入,频繁查询,......?使用NoSQL数据库,这比使用关系数据库产生了更大的差异。