2

DB操作にMongoTemplateを使用しています。ここで、選択した結果から最大フィールド値を取得したいと考えています。クエリを find メソッドに渡すと、ドキュメントの目的の最大フィールドが返されるように、クエリの書き方を教えてもらえますか。よろしくお願いします

4

1 に答える 1

4

spring-data-mongodb で「フィールド値が最大のオブジェクト」を見つけることができます。並べ替えフィールド (または @Id フィールド) がインデックス化されている場合、Mongo は並べ替え/制限の組み合わせを最適化します。それ以外の場合は、top-k アルゴリズムを使用し、グローバルな並べ替え ( mongodb sort doc)を回避するため、まだかなり優れています。これはMkyong の例からのものですが、最初に並べ替えを行い、制限を 1 秒に設定します。

Query query = new Query();
query.with(new Sort(Sort.Direction.DESC, "idField"));
query.limit(1);
MyObject maxObject = mongoTemplate.findOne(query, MyObject.class);
于 2016-10-11T17:11:09.903 に答える