首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忍者框架、Morphia和GeoSpatial索引

忍者框架、Morphia和GeoSpatial索引
EN

Stack Overflow用户
提问于 2016-07-07 03:51:11
回答 0查看 227关注 0票数 0

我正在尝试在MongoDB中存储和查询地理坐标。我使用的是带有忍者-mongodb模块的忍者框架,特别是使用Morphia。

带有坐标的实体如下所示

代码语言:javascript
复制
@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;
}

创建对象并查询它们的代码如下所示

代码语言:javascript
复制
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);
    }

我收到以下错误消息

代码语言:javascript
复制
"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": []

我尝试调用mongoDB.ensureIndexes(true);它在坐标上创建索引。但我仍然得到了我粘贴在上面的错误。

互联网帮不上忙,我希望外面有人能帮上忙。

首先要感谢大家!

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38232606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档