Я пытаюсь получить документы из коллекции на расстоянии.Я пытался использовать агрегацию $geoNear
, но я либо сталкиваюсь с ошибками (используя node.js и почтальон), либо возвращается 0 записей.
Образец документа:
{
"_id" : ObjectId("5cc37692fe9fd54b3cd136c9"),
"category" : "art",
"description" : "an eastbound description for The soda event.",
"geometry" : {
"type" : "Point",
"coordinates" : [
3.60178480057443,
6.46123057784917
]
}
"__v" : 0
}
.
.
Модель:
const GeoSchema = new Schema({
type: {
type: String,
default: "Point"
},
coordinates: {
type: [Number],
index: "2dsphere"
}
}, { _id: false });
const EventSchema = new Schema({
category: String,
description: String,
geometry: GeoSchema,
});
Запрос
db.events.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [3.60178480057443, 6.46123057784917] },
distanceField: "dist",
maxDistance: 90000,
spherical: true
}
}
]);
Выполнение вышеуказанного запроса возвращает ноль результатов, пустой массив(на почтальоне) и иногда отображает эту ошибку:
{
"name": "MongoError",
"errmsg": "exception: geoNear command failed: { ok: 0.0, errmsg: \"more than one 2d index, not sure which to run geoNear on\" }",
"code": 16604,
"ok": 0
}
Когда отображается эта ошибка, я запускаю функцию db.events.dropIndex
.Я скопировал и вставил примеры, используемые в документах, и это работало нормально.Пожалуйста, Как мне заставить эту функцию $ geoNear работать.Я боролся с этим целый день.