我有一系列带有修改索引的问题。
{
"v" : 1,
"key" : {
"modified" : 1
},
"name" : "modified_1",
"ns" : "app23568387.questions",
"background" : true,
"safe" : null
}
但是当我用修改后的字段查询问题时,mongo不会使用这个索引。
db.questions.find({modified: ISODate("2016-07-20T20:58:20.662Z")}).explain(true);
返回
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 0,
"nscannedObjects" : 19315626,
"nscanned" : 19315626,
"nscannedObjectsAllPlans" : 19315626,
"nscannedAllPlans" : 19315626,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 384889,
"nChunkSkips" : 0,
"millis" : 43334,
"allPlans" : [
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 0,
"nscannedObjects" : 19315626,
"nscanned" : 19315626,
"scanAndOrder" : false,
"indexOnly" : false,
"nChunkSkips" : 0
}
],
"server" : "c387.candidate.37:10387",
"filterSet" : false,
"stats" : {
"type" : "COLLSCAN",
"works" : 19624020,
"yields" : 384889,
"unyields" : 384889,
"invalidates" : 3,
"advanced" : 0,
"needTime" : 19315627,
"needFetch" : 0,
"isEOF" : 1,
"docsTested" : 19315626,
"children" : []
}
}
当我使用hint()
时,mongo会抛出错误bad hint
。
我有另一个文件夹集合,它们具有完全相同的索引,查询使用索引。 (返回"cursor" : "BtreeCursor modified_1"
的{{1}})
问题和文件夹之间可能有什么区别?指数是否可能被打破"即使explain()
返回它?如果是这样,我该怎么做才能解决它?
答案 0 :(得分:2)
您的索引似乎并非完全在后台构建。您可以使用db.currentOp()命令来检查:
https://docs.mongodb.com/v3.0/reference/method/db.currentOp/#currentop-index-creation
同时检查mongod.log以查看索引构建过程中的任何错误。
修复的简单方法是删除索引并再次创建