【发布时间】:2016-06-21 04:38:03
【问题描述】:
我有一个名为 User 的 MongoDB 文档,模型如下:
var User = mongoose.schema({
_id: ObjectId,
name: String,
age: Number,
blog_posts: [ObjectID]
});
还有一个名为 BlogPost 的文档,模型如下:
var BlogPost = mongoose.schema({
_id: ObjectId,
title: String,
author: ObjectId,
content: String,
date: Date
});
现在假设这已扩展到 50,000 多个用户和 500,000 多个博客帖子。如果我想查找用户的博文,这将是一种更好的方法(就性能和代码可读性而言):
Approach 1:
搜索所有BlogPost,找到匹配的author = ObjectId。
Approach 2:
仅搜索 BlogPost,其 ObjectId 与 User blog_posts 数组中的 ObjectId 匹配。
似乎这两种方法都需要搜索 BlogPost 的所有 100,000 多条记录。将ObjectId存储在Userblog_posts数组有什么好处?
【问题讨论】: