Я анализирую float (ed) широту и долготу перед сохранением их в формате geo JSON в MongoDB. И, как я уже проверил, координаты правильно хранятся в виде цифры c. Но когда я выполняю фильтрацию (поиск), я возвращаю координаты в виде строк.
Вы можете видеть мою структуру данных:
{
"_id" : ObjectId("5e327c4b8c0181790e15d495"),
"username" : "test",
"location[type]" : "Point",
"location[coordinates][]" : [
77.641145,
12.89149
],
"email" : "test@gmail.com",
"phone" : "8998778987",
"chat" : "0"
}
Это мой фильтр query:
collection.find({
"location": {
$near: {
$geometry: {
type: "Point" ,
coordinates: [lng, lat]
},
$maxDistance: 2000,
$minDistance: 0
}
}
}, {}, function (e, docs) {
docs = JSON.stringify(docs);
console.log("docs "+docs);
res.send(docs);
if(e){
throw e;
}
});
Перед сохранением данных я проанализировал координаты, подобные этой, и проверил тип на «число».
data["location[coordinates][]"][0] = parseFloat(data["location[coordinates][]"][0]);
И даже в базе данных вы можете видеть, что координаты не сохраняются в виде строки. Есть предложения ??