2017-03-18 1 views
0

Ich versuche die Geolocation-Suche in mongodb zu verwenden. In einem einfachen Fall funktioniert das gut, wie Sie in Beispiel 1 sehen können. Aber meine Standorte sind in einem Adressobjekt verschachtelt und ich habe nicht herausgefunden, wie man die Ortssuche im zweiten Beispiel durchführt.Datensätze in mongodb mit Geolocation (Near-Feature) zu finden, funktioniert nicht, wenn das Standortfeld in einem Objekt verschachtelt ist.

# Example 1 - works 
db.test1.insert({ 
    "name" : "location1", 
    "position" : { "type" : "Point", "coordinates" : [ 49.42949, 11.085466 ]} 
}); 

db.test1.createIndex({ position: "2dsphere" }) 
db.test1.find({ 
    position: {$near: {$geometry: {type: "Point", coordinates: [49.475180,10.984163]}, $maxDistance: 15000}} 
}); 

# Example 2 - didn't find records 
db.test2.insert({ 
    "name" : "location1", 
    "address": { 
     "position" : { "type" : "Point", "coordinates" : [ 49.42949, 11.085466 ]} 
    } 
}); 
db.test2.createIndex({ position: "2dsphere" }) 

db.test2.find({ 
    position: {$near: {$geometry: {type: "Point", coordinates: [49.475180,10.984163]}, $maxDistance: 15000}} 
}); 

db.test2.find({ 
    address: {position: {$near: {$geometry: {type: "Point", coordinates: [49.475180,10.984163]}, $maxDistance: 15000}}} 
}); 

Antwort

1

Verwenden Zitat wann immer Sie verschachtelte Objekte

db.test2.find({ 
    'address.position': { 
     $near: { 
       $geometry: { 
        type: "Point", 
        coordinates: [49.475180,10.984163] 
       }, $maxDistance: 15000 
     } 
    } 
}); 
+0

genial .... Ihre Beratung war perfekt zugreifen müssen! – Jonas

Verwandte Themen