In meinem Projekt gibt es zwei AnforderungenMongo DB - Geospatial Abfragen mit Standort und Feldradius (Internal Feld Vergleich)
Ertste: Ich habe die Sammlung unter
{
"name": "James",
"loc" : [ 12.9000, 14.6733]
},
{
"name": "James",
"loc" : [ 54.9000, 78.6733]
}
dieses Denn ich habe alle den Ort zu finden, die meine Position mit einem bestimmten Radius übereinstimmen, so verwende ich diese Abfrage:
var myLoc = [ 13.5, 67.5 ];
var myRadius = 150;
model.find({
loc : {
$geoWithin : {
$centerSphere : [ myLoc, myRadius ]
}
}
}
).exec()
Die obige Abfrage funktioniert gut.
Zweite: Ich habe die Sammlung wie unten.hier bin ich konfrontiert Problem.
{
"name" : "James",
"loc" : [ 12.9000, 14.6733],
"radius" : 115
},
{
"name" : "James",
"loc" : [ 54.9000, 78.6733],
"Radius" : 276
}
Hier habe ich den Radius in meiner Sammlung selbst. Die Benutzereingabe ist loc nur
var myLoc = [ 14.67, 56.78 ];
Jetzt muss ich alle Dokumente finden, die meine Lage mit ihrer Lage und ihrem Radius entsprechen.
Ich habe versucht, Abfragen wie
model
.where('loc').within({ center: myLoc, radius: 'this.Radius', unique: true, spherical: true })
.exec()
Error : The err is CastError: Cast to number failed for value "this.Radius" at path "undefined"
dann
model
.find(
{
$where:
{
Location : {
$geoWithin :
{ $centerSphere : [myLoc, '$Radius'] }
}
}
}
)
.exec()
Error : Error: Must have a string or function for $where
dann
model
.aggregate(
{
$match : {
loc : {
$geoWithin : {
$centerSphere : [ myLoc, "$Radius" ]
}
}
}
}
)
.exec()
Error : The err is MongoError: exception: bad query: BadValue bad geo query: { $geoWithin: { $centerSphere: [ [ -1.965373600000021, 52.4744464 ], "$Radius" ] } }
Ich bin ganz neu query..Even Ihre kleine Anregung MongoDB helfen ich auf großartige Weise. Bitte geben Sie mir den Einblick, wie dies zu erreichen ist. Ihre Hilfe appreciated.THANKS stark