MongoDB:是否正在查找具有ID性能列表的所有实体?

时间:2015-03-29 10:07:27

标签: mongodb database

在MongoDB中,我知道加入两个" table"不是表现。但是在MongoDB网站上,有一种方法:在一个文档中引用所有ID。例如:

Book {
 title
 content
 author [ author_id1, author_id2, author_id3]
}

所以我的问题是:如上所述,当我拿到一本书时,我有作者ID的列表,然后我可以查询作者集合以获取所有作者。在MongoDB中,这种行为表现如何?因为我通过使用索引来获取所有实体。

逆转,我有作者集:

Author {
 name
 year
 first_written_book_id
}

因此,我使用first_written_book_id进行查询以获取图书详细信息。此操作是否会像RDBMS一样获得性能?

谢谢:)

1 个答案:

答案 0 :(得分:2)

您可以查询author集合,它可以非常有效,但您必须在name字段上添加索引。如果您使用_id来访问作者,那么您不需要任何其他内容。

您的查询可能如下所示:

db.authors.find({_id: {$in: [ author_id1, author_id2, author_id3]}})
db.authors.find({name: {$in: [ author_id1, author_id2, author_id3]}})

查看更多信息here$in运算符能够使用现有索引来加速查询执行。