Хорошо, мне удалось сделать это следующим образом:
Я получил ценные указания из этого ответа: https://stackoverflow.com/a/23291154/8025329
Наконец это заставило его работать (это не окончательно и не отполировано, но решает основныевызов), я выкладываю самые важные части:
подключение к Mongoose (пространственное упоминание 'useCreateIndex: true'):
mongoose.connect(config.MONGO_URI, { useNewUrlParser: true, useCreateIndex: true });
Mongooseсхема:
const Schema = new Schema({
loc: { type: Object, index: '2dsphere', required: true },
category: { type: String, required: true }
});
Пример объекта GeoJson:
{
loc : { type: "Point", coordinates: [ longitude, latitude ] },
category : "location"
}
Поиск ближайших мест:
MongodbSchema.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [ longitude , latitude ] },
key: "loc",
distanceField: "dist.calculated",
maxDistance: 600,
query: { category: "location" },
num: 100,
spherical: true
}
}
], function(err, locations){
if (err) throw err;
res.send(locations);
});
Полезные ссылки: https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/#pipe._S_geoNear
https://docs.mongodb.com/manual/reference/geojson/