我有下一个收集样本:
var testSchema = new Schema({
title: {type: String, required: true},
owner: {type:Schema.Types.ObjectId},
locatedAt: {type: {}, index: '2dsphere', sparse: true, "2dsphereIndexVersion": 2, required: true}
});
我插入了10.000行来评估架构性能
db.test.find({"locatedAt":{"$near":{"$geometry":{"type":"Point","coordinates":[2.240413,41.582159]}}}}).explain();
结果是下一个:
{
"cursor" : "S2NearCursor",
"isMultiKey" : false,
"n" : 10000,
"nscannedObjects" : 48846,
"nscanned" : 48846,
"nscannedObjectsAllPlans" : 48846,
"nscannedAllPlans" : 48846,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 95,
"indexBounds" : {
},
"filterSet" : false
}
我尝试创建一个" 2d"索引具有相同的结果。
总结在我看来,查询扫描了太多行,我做错了什么?也许是Schema的定义?
谢谢!
答案 0 :(得分:0)
评估了' Explain'文档和博客中的一些主题,在这里我需要得出结论,这不是索引问题或模式定义问题。
如果包含限制约束,则nscanned对象从大约50k对象下降到36(限制10),并且milis下降到4。