0

私は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"})
4

0 に答える 0