过渡到新的AWS documentDB服务。目前,在Mongo 3.2上。当我运行db.collection.distinct("FIELD_NAME")
时,它会很快返回结果。我将数据库转储到了AWS文档数据库(与Mongo 3.6兼容),但此简单查询陷入了困境。
这是我的.explain()以及工作实例与AWS documentdb的索引:
说明工作实例上的功能:
> db.collection.explain().distinct("FIELD_NAME")
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "db.collection",
"indexFilterSet" : false,
"parsedQuery" : {
"$and" : [ ]
},
"winningPlan" : {
"stage" : "PROJECTION",
"transformBy" : {
"_id" : 0,
"FIELD_NAME" : 1
},
"inputStage" : {
"stage" : "DISTINCT_SCAN",
"keyPattern" : {
"FIELD_NAME" : 1
},
"indexName" : "FIELD_INDEX_NAME",
"isMultiKey" : false,
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 1,
"direction" : "forward",
"indexBounds" : {
"FIELD_NAME" : [
"[MinKey, MaxKey]"
]
}
}
},
"rejectedPlans" : [ ]
},
解释AWS documentdb,不起作用:
rs0:PRIMARY> db.collection.explain().distinct("FIELD_NAME")
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "db.collection",
"winningPlan" : {
"stage" : "AGGREGATE",
"inputStage" : {
"stage" : "HASH_AGGREGATE",
"inputStage" : {
"stage" : "COLLSCAN"
}
}
}
},
}
这两个实例的索引:
{
"v" : 1,
"key" : {
"FIELD_NAME" : 1
},
"name" : "FIELD_INDEX_NAME",
"ns" : "db.collection"
}
该数据库也有数百万个文档,但是该“ FIELD_NAME”只有大约20个不同的值。任何帮助,将不胜感激。
我用.hint(“ index_name”)尝试了一下,但是没有用。我尝试清除计划缓存,但得到Feature not supported: planCacheClear
答案 0 :(得分:0)
在这种情况下,COLLSCAN和IXSCAN的区别不大,都需要扫描所有文档或索引条目。