2016-07-06 3 views
0

MongoDBで地理座標を格納および照会しようとしています。私は、特にMorphiaを使って、Ninjaframeworkをninja-mongodbモジュールで使用しています。オブジェクトを作成し、それらを照会するコードは、このNinjaframework、Morphia、およびGeoSpatialのインデックス

try { 
     List<models.lc.core.Place> lcPlaces = mongoDB.getDatastore().find(Place.class).field("coordinates").near(lat, lng).asList(); 
     ObjectMapper mapper = new ObjectMapper(); 
     mapper.configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
     Places places = mapper.readValue(Http.Get(url), Places.class); 
     for(models.google.Place place:places.results) { 
      models.lc.core.Place p = new models.lc.core.Place(); 
      p.name = place.name; 
      p.coordinates = GeoJson.point(place.geometry.location.lat, place.geometry.location.lng); 
      p.google_places_id = place.place_id; 
      mongoDB.save(p); 
     } 
     return new Result(HttpStatus.OK_200).json().render(places); 
     //return new Result(HttpStatus.OK_200).text().render(Http.dumpInputStream(Http.Get(url))); 
    } 
    catch (Exception e){ 
     Places response = new Places(); 
     response.status = url; 
     return new Result(HttpStatus.BAD_REQUEST_400).json().render(e); 
    } 

のように見えた座標を持つ

エンティティは、この

@Entity 
@Indexes({ 
    @Index(fields = @Field(value="coordinates", type = IndexType.GEO2DSPHERE)) 
}) 
public class Place { 
    @Id 
    public ObjectId id; 
    public String google_places_id; 
    public String name; 
    public Point coordinates; 
} 

のように見える私は、このエラーメッセージ

"errorMessage": "error processing query: ns=core-api.PlaceTree: GEONEAR field=coordinates maxdist=1.79769e+308 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query", 
"errorCode": 2, 
"message": "Query failed with error code 2 and error message 'error processing query: ns=core-api.PlaceTree: GEONEAR field=coordinates maxdist=1.79769e+308 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query' on server localhost:27017", 
"localizedMessage": "Query failed with error code 2 and error message 'error processing query: ns=core-api.PlaceTree: GEONEAR field=coordinates maxdist=1.79769e+308 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query' on server localhost:27017", 
"suppressed": [] 

を得るI mongoDB.ensureIndexes(true)を呼び出そうとしました。座標上のインデックスを作成します。しかし、私はまだ私が上記の貼り付けエラーを取得します。

インターネットには何の助けもありません。

事前に感謝します。

+0

手作業でインデックスが作成された後、問題がアノテーション付きインデックスの作成にあります。 – rudkjobing

答えて

0

morph32で作成したインデックス定義と手作業で作成したインデックス定義を使用してissueをファイルできますか? morphiaが悪いインデックスを作成している場合は、私はそれを固定したいと思います。ありがとう。

+0

ご返信いただきありがとうございます。問題を早急に報告します。 – rudkjobing

関連する問題