userLink_titles = Entries.find({ _id:"bxSbMgszYxbCqDonF"})
返回:
docs: Object
CBqHrJvTE8xz7u2Rz: Object
_id: "CBqHrJvTE8xz7u2Rz"
author: "AHSwfYgeGmur9oHzu"
Q8m7PMbQr62E3A73f: Object
_id: "Q8m7PMbQr62E3A73f"
author: "AHSwfYgeGmur9oHzu"
bxSbMgszYxbCqDonF: Object
_id: "bxSbMgszYxbCqDonF"
author: "AHSwfYgeGmur9oHzu"
如您所见,它返回了正确的文档,但也返回了不正确的文档。
findOne:userLink_titles = Entries.findOne({ _id:"bxSbMgszYxbCqDonF"})
按预期工作,只返回正确的文档。
我会使用 findOne,但最终目的是使 _id 选择器成为一个数组,以便 find 将返回与数组中的 _id 选择器匹配的所有文档的文档。
奖励积分:
假设我想检索一组文章的标题,其中对这些文章的引用(其 Articles 集合中的 Articles _id)已保存在用户集合中。
如此有效地,我将从用户集合中检索文章引用,并使用这些引用从文章集合中检索文章的标题。
代码/伪代码会是什么样子?类似于以下内容(我假设以下内容是查询/检索记录的一些最佳实践的完全混蛋)
user_profile = Users.findOne({username : "Frank"});
user_saved_articles_ids = user_profile.findOne({saved_articles_ids});
userLinks = Articles.find({ _id:user_saved_articles_ids});
userLinksTitles = Articles.find({titles});