У меня есть основной документ, например, так:
{
"_id" : ObjectId("5760fe623f6d3ad25e387ffc"),
"type": 5,
"product" : {
"location" : {
"geometry" : [ 153.39999999999998, -28.016667 ],
"name" : "Gold Coast QLD, Australia",
"id" : "ChIJt2BdK0cakWsRcK_e81qjAgM"
}
}
}
Я пытаюсь запросить местоположение с помощью $near
метода, предоставленного MongoDB.
Это мой запрос:
db.posts.find({
'product.location.geometry': {
$near: [ 153.39999999999998, -28.016667 ]
}
})
В документации MongoDB говорится, что:
Чтобы указать точку с помощью устаревших координат, $ вблизи требует 2d индекса и имеет следующие синтаксис:
{
$near: [ <x>, <y> ],
$maxDistance: <distance in radians>
}
I даже не дает этот пример на их сайте:
db.legacy2d.find({
location : { $near : [ -73.9667, 40.78 ], $maxDistance: 0.10 }
})
Это ошибка она производит:
Error: error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "error processing query: ns=mytestnodedb.postsTree: GEONEAR field=product.location.geometry maxdist=1.79769e+308 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query",
"code" : 2
}
Я не в состоянии определить все, что случилось с моим запросом. Монго утверждает, что $near
должен быть долготой, за которой следует широта, которую я определенно делаю. Я целеустремленно упускаю $maxDistance
, так как Mongo заявляет, что он вернет результаты sorted from nearest to farthest
.
Означает ли это, что я должен запустить 'CreateIndex()' после того, как каждое создание нового документа внутри этой коллекции? – Fizzix
нет, только один раз сверху комплект. – Saleem
Хорошо, круто. Кажется, сейчас хорошо работает. Благодаря! – Fizzix