找不到任何特殊指数

时间:2013-08-30 14:41:09

标签: ruby mongodb mongomatic

我正在使用mongomatic gem

以下是索引列表:

Address.collection.index_information #=>
{"_id_"=>
  {"v"=>1, "key"=>{"_id"=>1}, "ns"=>"downloader_test.proxies", "name"=>"_id_"},
 "address_1"=>
  {"v"=>1,
   "key"=>{"address"=>1},
   "unique"=>true,
   "ns"=>"downloader_test.proxies",
   "name"=>"address_1"},
 "randomizer_1"=>
  {"v"=>1,
   "key"=>{"randomizer"=>1},
   "ns"=>"downloader_test.proxies",
   "name"=>"randomizer_1",
   "2d"=>true}}

当我在查询中尝试使用$ near运算符时出现了这样的错误:

Address.collection.find_one('randomizer' => { '$near' => [129, 0] }) #=>

Mongo::OperationFailure: can't find any special indices: 2d (needs index), 
2dsphere (needs index)

我无法理解为什么它不起作用,它有随机函数的索引但不能使用它。

可能有什么问题?

2 个答案:

答案 0 :(得分:1)

当您将位置数组的值导入为字符串而不是浮点数时,也会发生这种情况。确保您的种子使用.to_f,或者您没有将值设置为字符串。

答案 1 :(得分:0)

问题在于设置索引

而不是

Address.collection.create_index("randomizer", '2d' => true)

应该是

Address.collection.create_index("randomizer" => '2d')