面试题答案
一键面试优化思路
- 减少数据扫描范围:通过索引,MongoDB 可以快速定位到可能包含特定章节标题的文档,避免全集合扫描。
- 利用合适的查询方式:根据数据特点和索引类型,选择恰当的查询操作符,以充分利用索引的优势。
索引策略
- 单字段索引:如果章节标题数组中的元素是简单的字符串类型,且不需要考虑多个元素组合查询,可以创建单字段索引。例如,对于
book.chapters
字段,可以通过以下方式创建索引:
db.books.createIndex({chapters: 1});
- 多键索引:由于
chapters
是数组类型字段,MongoDB 会自动创建多键索引。多键索引适用于对数组中单个元素进行查询。例如查询包含特定章节标题'Chapter 1'
的书籍:
db.books.find({chapters: 'Chapter 1'});
- 复合索引:如果除了章节标题查询外,还经常结合其他字段进行查询,比如书籍的类别
category
,可以创建复合索引。例如:
db.books.createIndex({category: 1, chapters: 1});
这样在查询特定类别中包含特定章节标题的书籍时,可以更高效地利用索引。例如:
db.books.find({category: 'Fiction', chapters: 'Chapter 1'});