我正在使用 springmongo 1.7.2 和 mongodb 2.6.0
我的集合对象在 JSON 中如下所示:
{
"childObject1" : {
"description" : "Lorem ipsum",
childObject2" : {
"someField" : "someValue",
"loc" : [-82.123123, 28.123123123]
}
}
}
为了构建一个文本查询以及地理空间数据,我使用以下内容,它工作正常:
TextCriteria textCriteria = TextCriteria.forDefaultLanguage().matchingAny(searchTerms);
Point point = new Point(long, lat);
Distance d = new Distance(radius, Metrics.MILES);
Circle circle = new Circle(point, radius/69.172);
Criteria gloablCriteria = Criteria.where("childObject1.childObject2.loc").within(circle);
Query q = new Query();
q = TextQuery.queryText(textCriteria);
q.addCriteria(globalCriteria);
List<MyObject> results = mongoOps.find(q, MyObject.class);
但是,如果我将 loc 对象的格式更改为 GeoJSON(如下所示),则无法使查询正常工作。结果列表为空,服务器控制台上没有错误。
"loc" : {"type" : "Point", "coordinates":[-82.123123, 28.123123123]}
PS 更改 loc 属性的格式后,我删除并重新创建了地理空间索引:
createIndex("{MyObject.childObject1.childObject2.loc":"2dsphere"})