c0m*_*ade 10 javascript mongoose mongodb node.js express
假设我正在使用Node.js和mongoose构建一个讨论论坛.用户可以拥有多个论坛,论坛可以有多个评论.用户也可以邀请其他用户加入论坛.因此,我的问题是关于使用参考或嵌入文档的模型设计!
如果我使用嵌入式文档,它看起来像:
var Comment = new Schema({ ... });
var Forum = new Schema({
title: {type: String},
content: {type: String},
comments: [Comment],
attendees: [User]
});
var User = new Schema({
name: {type: String},
email: {type: String},
forums: [Forum]
});
var Account = mongoose.model('Account', User);
Run Code Online (Sandbox Code Playgroud)
使用上面的设计,我苦苦挣扎:当用户向论坛添加评论,并且该论坛在我的论坛中时,我认为我无法在论坛列表中获得新评论的更新.我呢?在这种情况下,您知道如何使嵌入式文档工作吗?
因此,我想在猫鼬中使用引用.在这种情况下,我将有两个集合:Account和Forum.在这种情况下,向论坛添加新评论不是问题.我对吗?
将参考比更好的嵌入文档为这个应用程序?
提前致谢,
Mak*_*kov 42
这主要取决于您将如何查询和更新您的数据.在这种情况下,一致性和文档大小也很重要.以下是引用或嵌入文档时的一个很好的总结:
嵌入:
引用:
这是我读过的一本关于mongo的书的摘录.这些只是一般规则,但根据我的经验,使用它们使得很明显可以参考或嵌入大多数时间.
在这种情况下,我宁愿参考论坛.但请考虑您的所有要求.例如,如果您从用户引用论坛,并且您需要查询特定论坛的所有用户,则在这种情况下查询可能会很慢.如果我是你,我会列出我需要的所有内容,然后使用一般规则将在嵌入和引用的优缺点之间找到平衡点.
希望能帮助到你!
我个人喜欢在您这样的情况下进行参考。这样,我可以从用户那里获得评论,从论坛中获得用户,从评论中获得论坛,从用户中获得论坛等,而不必担心进行复杂的嵌入式文档查询。我什至不用担心存储嵌入式参考文档。如果论坛和评论之间存在一对多关系,那么我将在评论上存储论坛参考,而在论坛上没有评论参考,因为当您从评论集合中添加/删除评论时,您还必须去掉嵌入的来自论坛评论集的参考文档。
我可以使用论坛参考从评论中查询一个论坛,也可以通过查询该论坛参考的评论集合来获得论坛的所有评论(这只是一个ID号,直到猫鼬为您在幕后填充它为止)。
| 归档时间: |
|
| 查看次数: |
6371 次 |
| 最近记录: |