2014-07-09 5 views
0

Comment écrire ceci mongodb requête shell avec l'utilisation de Java?requête shell mongodb avec Java

requête:db.building_feature.find({geometry : {$geoIntersects :{$geometry :{type : "Polygon", coordinates :[[[37.59777,55.73216],[37.59805,55.77615],[37.68710,55.77643],[37.68517,55.73290],[37.59777,55.73216]]]}}}})

Ma collection GeoSpatialIndex est "2dsphere".

Ma version qui ne fonctionne pas:

DBCollection testCollection = db.getCollection("building_feature"); 
final LinkedList<double[]> geo = new LinkedList<>(); 
geo.addLast(new double[]{37.59777, 55.73216}); 
geo.addLast(new double[]{37.59805, 55.77615}); 
geo.addLast(new double[]{37.68710, 55.77643}); 
geo.addLast(new double[]{37.68517, 55.73290}); 

final BasicDBObject query 
    = new BasicDBObject("geometry", new BasicDBObject("$within", new BasicDBObject("$geometry", geo))); 
System.out.println("Result Count : " + testCollection.find(query).count()); 

Merci.

Répondre

1

Vous devriez écrire exactement la même requête en Java:

BasicDBObject polygon = new BasicDBObject("type", "Polygon"); 
polygon.put("coordinates", <myArray>); 

BasicDBObject query = new BasicDBObject(
    "geometry", new BasicDBObject(
     "$geoIntersects", new BasicDBObject(
      "$geometry", polygon 
     ) 
    ) 
); 

<myArray> étant votre triple imbriqué double[][][] polygone GeoJSON coordonnées tableau. Btw, il pourrait être plus clair de lire avec une chaîne JSON, puis JSON.parse.

Et je pense que $whithin opérateur n'existe pas dans MongoDB ...

+0

Merci, pouvez-vous donner l'exemple « GeoJSONPolygonBasicDBObject »? –

+0

Voir mon nouveau code, j'ai ajouté 'polygon'. – dgiugg

+0

Eh bien, c'est Java basique, et je pense que c'est hors du but de la question, qui concerne MongoDB API pour Java. Vous ne voulez pas que j'écrive tout votre code, je suis sûr que Google vous dira comment créer des tableaux en Java;) – dgiugg