在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一样获得性能?
谢谢:)
答案 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
运算符能够使用现有索引来加速查询执行。