- 给排序字段加索引
需要注意:联合索引里面,一个字段的顺序和逆序是不一样的索引。比如
1 | db.coll.createIndex({"a": 1, "b": 1}) |
和
1 | db.coll.createIndex({"a": 1, "b": -1}) |
是两个不一样的索引
- 使用 batchSize 选项批量获取数据
jenssegers mongodb
包默认情况下会获取 101
条记录,然后其他记录在底层通过 iterator_to_array
来获取,如果我们需要获取的数据量比较多,则会需要产生多次获取数据的操作。
所以,如果我们知道需要获取大批量数据的时候,可以指定一个比较大的 batchSize 从而减少网络往返次数。
- 只获取需要的字段(针对大批量获取数据的情况)
主要目的:减少带宽占用,以及处理过程中可以减少内存占用。
- 使用覆盖索引
覆盖索引的使用类似 MySQL,因为 MongoDB 的索引也是 B+ 树。如果我们在查询的时候只需要某一两个字段,可以在索引上跟查询条件组合在一起建立一个联合索引。
- 使用 find 代替 aggregate