我正在开发一个用户可以拥有多个帖子的项目。
所以我想知道哪种方法更适合查询他的所有帖子
在用户模型中有一个包含所有帖子ID的帖子字段,然后在帖子集合中搜索每个FindById
,其中包含来自所有用户的所有帖子
一次查询所有帖子集合并查找给定用户的所有帖子
答案 0 :(得分:0)
我会尝试回答标题中的问题以及具体的用例,从标题开始。
在您的用例的上下文之外,当提供有效 ObjectIds时,findOne的速度可能会非常快,因为通过.findOne({ _id })
传递无效ID将无法确保{{ 1}}是一个有效的ObjectId。
但是,如果ID格式错误,_id
会阻止查询
从执行任何实际抛出.findById(_id)
,其中
如果你不确定ID的来源,会更有效率,
例如用户输入,如果您想提供错误消息而不是空结果,则可以获得额外的好处。
如前所述,这些细节似乎与您的用例无关,因为所讨论的ObjectId已存储在数据库中,更不用说这似乎是一个问题,理论上的查询顺序是什么更快,而不是一个查询帮助器。
CastError
Posts.find({ userId })
和Post
模型的一个(未经测试的)示例可以是: User
这应该返回一个对象,其中包含一个包含帖子数组的单个键User
.findOne({ foo: 'bar' })
.populate('posts')
.select('-id posts')
。