Моя структура документа, как следующее:
{ agency_key : '',
route_id: '',
direction_id: '',
stops: [
{stop_id:15,
stop_lat: '',
stop_lon: '',
loc: [-83.118972, 42, 121567]
},
{...
}
]
}
Я хочу найти остановки, которые близки к данным (широта, долгота) пары в заданном расстоянии от каждого документа в коллекции. Я создал 2d-индексы. Я попробовал $ unwind, затем $ geoNear, но он говорит, что $ geoNear может быть только на первом этапе конвейера. Я попытался это:
db.tm_stops.aggregate([
... {
... $geoNear: { near: {coordinates: [-82.958841, 42.370114] }, distanceField: "stops.calculated", query: { agency_key: "DDOT"},
... includeLocs: "stops.loc" }
... }
... ])
Я попытался следующие:
db.tm_stops.find({stops:{$near:[-82.958841, 42.370114], $maxDistance: 1 } })
Он бросает эту ошибку:
error: {
"$err" : "Unable to execute query: error processing query: ns=gtfs.tm_stops limit=0 skip=0\nTree: GEONEAR field=stops maxdist=1 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query",
"code" : 17007
Что должно быть моим Монго запроса? Мне нужно выполнить это из приложения Node.js, но я хочу сначала увидеть результат в Mongo shell. Заранее спасибо.