У меня есть массив широты и долготы, но я не могу сопоставить весь массив.Поэтому я должен повторять цикл и выполнять следующий отдельный запрос в цикле.так что для выполнения запроса потребуется много времени.
Мой следующий запрос в цикле
Collection.find({'location':{$near:{$geometry:{type:"point",coordinates:[longitude,latitude]},$maxDistance:20}}}).exec(function(err,res){
});
Ожидаемый запрос типа
{'location':{$near:{$geometry:{type:"point",coordinates:[[longitude,latitude],[longitude,latitude],[longitude,latitude]]},$maxDistance:20}}}
У меня есть массив координат, но я не могу передать весь массив здесь, поэтому мне нужно передать одну широту и долготу в цикле.
Есть ли способ найти данные из базы данных, используя массив координат?
Обновление
Я пытался следовать Query
Collection.find({'location':{$near:{$geometry:{type:"point",coordinates:[[72.502912,23.011787],[ 72.50265, 23.011772 ]]},$maxDistance:20}}});
Я получил следующую ошибку
error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "invalid point in geo near query $geometry argument: { type: \"point\", coordinates: [ [ 72.50291199999999, 23.011787 ], [ 72.50265, 23.011772 ] ] } Point must only contain numeric elements",
"code" : 2
}
Документ
{
"_id" : ObjectId("5abcf7ae59869428b40c5727"),
"latitude" : 23.8787,
"longitude" : 72.7788,
"location" : [
72.7788,
23.8787
],
"address" : "Ahmedabad",
"status" : "active",
"eventId" : "5a8d6a27733b28295db9635e",
"eventCreateBy" : "admin",
"description" : "",
"isDeleted" : "0",
"createdAt" : ISODate("2018-03-29T14:26:54.198Z"),
"updatedAt" : ISODate("2018-03-29T14:26:54.198Z")
}
Координаты
[72.7788,23.8787] : Matched
[72.5032552,23.0122194]: Matched
[18.1519461,43.8984328]: Not Matched