将更多字段添加到mongo查询会使其更快或更慢吗?

时间:2018-08-06 15:46:09

标签: mongodb mongodb-query

假设我有一个mongodb收藏品

[{book_id: 124, book_name: 'ABCD', language: 'English'}, {book_id: 185, book_name: 'EFGH', language: 'French'}, ...]

book_id 是唯一的。因此,要检索特定书籍,仅 book_id 就足够了。 查询可能是

db.books.find({book_id: 124})

假设我也知道这本书是一本“英语”书。我可以向

进行查询
db.books.find({book_id:124, language: 'English'})

是否将更多不必要的字段添加到查询中使查询更快或更慢?

1 个答案:

答案 0 :(得分:1)

直接的答案是添加更多字段肯定会减慢查询速度。

但是在您提到的情况下,book_id是唯一的,并且您知道这本书是一本英语书,因此查询没有任何区别。

在这里重要的是book_id是否已编入索引?

MongoDB索引以线性方式工作: 假设book_id既没有索引也没有唯一。在这种情况下,集合扫描将返回假设100个文档包含book_id:124的信息,然后从100个文档中查找包含英语的语言的字段数。

但是,如果book_id已建立索引,则查询将使用索引扫描并直接返回100 doc,并查找英语语言。

在这种情况下,如果book_id和语言都属于复合索引,则查询仅返回该特定文档。