我正在使用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)
我无法理解为什么它不起作用,它有随机函数的索引但不能使用它。
可能有什么问题?
答案 0 :(得分:1)
当您将位置数组的值导入为字符串而不是浮点数时,也会发生这种情况。确保您的种子使用.to_f,或者您没有将值设置为字符串。
答案 1 :(得分:0)
问题在于设置索引
而不是
Address.collection.create_index("randomizer", '2d' => true)
应该是
Address.collection.create_index("randomizer" => '2d')