spring-data を使用して mongodb と通信しています。DB から指定された地理ポイントによって近くのプロファイルを取得する地理クエリを実行する方法を探しています。クエリの要件は次のとおりです。
1) 距離による
制限 2) 返されるプロファイルの数による制限
3) プロファイル ドキュメントの時間フィールドによる追加検索
4) 取得したドキュメントからフィールドを含める/除外する機能
最初はmongoTemplate.geoNearメソッドを使用しました...
Query criteria = new Query(Criteria.where("time").gte("some_date"));
criteria.fields().exclude("friends");
NearQuery query = NearQuery.near(point).maxDistance(maxDistance)
.num(limit).query(criteria);
GeoResults<Profile> result = mongoTemplate
.geoNear(query, Profile.class);<br/>
しかし、その後、mongo は geoNear クエリのフィールドの包含/除外をサポートしていないことに気付きました。
だから私はNearクエリについて考えています.spring-dataでそのような「複雑な」クエリを実行する唯一の方法は@Queryアノテーションを使用することです.そのようなクエリで上記の要件2,3をサポートする方法はありますか? ? その他の方法で ?
ありがとう