Mam następujący dokument mongoDB, który przedstawia aktualną pozycję pojazdu w polu „GPS”
{
"_id" : ObjectId("565564e2f3e3f5bd2bdfad18"),
"vehicleId" : 6521,
"time" : 1448389800,
"GPS" : "18.55419790592852,73.80579963326454",
"readings" : {
"RPM" : {
"value" : 1000
},
"Speed" : {
"value" : 40
}
}
}
Muszę sprawdzić, czy ten wpis mieści się w wielokącie określonym współrzędnymi:
{lat: 18.554321, lng: 73.805231},
{lat: 18.553838, lng: 73.804936},
{lat: 18.553584, lng: 73.806524},
{lat: 18.554240, lng: 73.806546},
{lat: 18.554321, lng: 73.805231}
odwołując się do pola GPS obecnego w dokumencie.
Próbowałem z następującym zapytaniem, ale nie otrzymuję żadnego wyniku:
db.data26.find(
{
"GPS": {
$geoWithin: {
$geometry: {
type : "Polygon" ,
coordinates: [ [ [ 73.805231, 18.554321 ], [ 73.804936, 18.553838 ], [ 73.806524, 18.553584 ], [ 73.806546, 18.554240 ], [ 73.805231, 18.554321 ] ] ]
}
}
}
}
);
Każda pomoc zostanie doceniona
Odpowiedzi:
1 dla odpowiedzi № 1Wartość pola GPS to ciąg
„GPS”: „18,55419790592852, 73,80579963326454”
Może aby użyć geoWithin, twój GPS powinien być tablicą z poprawną kolejnością, która jest [long, lat]
lubię to:
[73.80579963326454, 18.55419790592852]