私はmongodb 2.6.0でspringmongo 1.7.2を使用しています
私のコレクション オブジェクトは、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"})