这是我使用的索引的名称
LongitudeLatitude_indexContents_1_prominent_-1
那-1件事有问题并自动生成。我想将其更改为LongitudeLatitude_indexContents_1_prominent_min1
或其他什么
索引需要一段时间。所以我宁愿只改变索引的名称。
例如,
如果我这样做
db.tablebusiness.find({ "LongitudeLatitude" : { "$nearSphere" : [106.772835, -6.186753], "$maxDistance" : 0.044983732050783008 }, "Prominent" : { "$gte" : 15 }, "indexContents" : { "$all" : [/^warung/] } }).hint("LongitudeLatitude_indexContents_1_Prominent_-1").limit(50).explain();
我得到了这个
> ).hint("LongitudeLatitude_indexContents_1_Prominent_-1").limit(50).explain();
Thu Sep 06 11:01:51 uncaught exception: error: { "$err" : "bad hint", "code" : 1
0113 }
答案 0 :(得分:2)
您为什么使用hint()
?这必须是我见过的最难以证明的代码。如果您的查询没有有效地使用索引,那么您应该真正更改查询或添加另一个索引以使查询在索引上运行。强制MongoDB使用它找不到自己的索引可能会进一步降低查询速度,因为它会尝试使用不提供快捷方式的b树。
实际上是你的查询:
db.tablebusiness.find({ "LongitudeLatitude" : { "$nearSphere" : [106.772835, -6.186753], "$maxDistance" : 0.044983732050783008 }, "Prominent" : { "$gte" : 15 }, "indexContents" : { "$all" : [/^warung/] } })
将使用您创建的索引而不使用hint()
。如果您在一天内为此查询提供更好的索引更有效,那么使用hint()
将阻止此查询由于新索引而更快。不仅如此,您还必须更改所有代码中的索引名称。
至于更改索引的名称:我认为你必须首先删除它然后重新索引创建一个你自己名字的新索引(尽管@Thilo提到,将自行命名的索引将被删除)。
答案 1 :(得分:1)
.hint( “LongitudeLatitude_indexContents_1_Prominent_-1”)
应该是
.hint({LongitudeLatitude_indexContents:1,Prominent:-1})