标签: mongodb
我有一个具有可选字段xy_id的集合。大约10%的文档(500k以内)没有此xy_id字段。
xy_id
我对此集合有很多查询,例如find({xy_id: <id>})。
find({xy_id: <id>})
我尝试正常索引(.createIndex({xy_id: 1}, {"background": true})),它确实提高了查询速度。
.createIndex({xy_id: 1}, {"background": true})
在这种情况下,这是索引字段的正确方法吗?还是应该使用稀疏索引或其他方式?
答案 0 :(得分:0)
是的,这是正确的方法。在这种情况下,MongoDB的默认行为运行良好。您可以在docs中看到索引创建支持unique标志,默认情况下为false。您所有缺少索引键的文档都将在一个索引条目下建立索引。查询在所有情况下都可以使用此索引,因为所有文档都已建立索引。
unique
false
另一方面,如果您使用稀疏索引,则缺少索引键的文档将根本不会被索引。除非明确提示,否则某些操作(例如count,sort和其他查询)将无法使用稀疏索引。如果有明确提示,则可以接受不正确的结果-不在索引中的条目将在结果中被忽略。您可以here来了解它。