在下面的示例中,我想检索填充了相应注释的帖子文档。
我是否需要将帖子中的评论引用作为数组?参考注释保持数组意味着每当更新新文档时,帖子文档将定期更新。
var Post = new schema({
content:String,
author:{ type: Schema.ObjectId, ref: 'User' },
createdOn:Date
});
var Comment = new Schema({
post : { type: Schema.ObjectId, ref: 'Post' },
commentText : String,
author: { type: Schema.ObjectId, ref: 'User' },
createdOn:Date
});
mongoose.model('Post',Post);
mongoose.model('Comment',Comment);
如果我将Post中的Comment._Id引用作为数组,那么在mongoose中我可以填充如下。
Post.findById(postid).populate('Comments').exec( callback);
但是我不想在创建新评论时更新帖子文档,因为您需要将评论ID推送到帖子文档中。注释引用了它所属的Post,因此从技术上讲,可以检索属于特定帖子的注释,但是如果要检索或发送单个json文档,是否可能没有包含对帖子文档中的注释的引用的数组?
答案 0 :(得分:1)
与数据建模一样,只有多种方法可以利用优势/劣势来做事。通常不止一种方式足以满足您的应用。
你问的问题是典型的1:n关系,所以你可以:
这些都是正确的并且有效。哪一个最好取决于您的使用 - 您的应用程序。例子:
此处的更多信息: http://docs.mongodb.org/manual/core/data-model-design/