2017-09-21 8 views
0

Ich habe eine Sammlung mit dieser Art von Dokumenten:

{ 
    _id: ObjectId, 
    type: "string", // COUNTRY, STATE, CITY 
    geometry: { 
    type: "MultiPolygon", 
    coordinates: <coordinates> 
    } 
} 

Und ich möchte, zum Beispiel berechnen, in dem COUNTRY jeder STATE ist. Ich habe versucht, dies zu tun:

var state = db.entity.findOne({_id:ObjectId("someStateID")}); 

db.entity.find({ 
    geometry: { 
    $geoIntersects: { 
     $geometry: state.geometry 
    } 
    }, 
    type:"COUNTRY" 
}); 

Und das funktioniert ganz gut, excepts in einigen Fällen, in denen die Leitung einiger STATE ist die Grenze eines Nachbarn zu berühren COUNTRY wo ich zwei oder mehr Dokumente.

Here is an example image

Gibt es eine Weise, die ich dieses Ergebnis durch überlappende Prozentsatz sortieren? Oder irgendeine Art von Filter, um zu wissen, welches das genaue Elternteil ist?

Antwort