JavaのMongondb集約関数&重複排除

1つの 重複除外:
 2  
3。 我々は再異なる方法によってだけでなく、MySQLのキーワードに指定されたフィールドに行くことができる
 4。 
5。 DBObjectをクエリ= 新しい新しいBasicDBObject();
 6。 mongoTemplate.getCollection( "COLLECTIONNAME")の別個の(「重複排除フィールド。名前" 、クエリ)
 7。 
8。 
9つの。 重合のパケット:
 10  
。11  次のように、例えば、フィールド集約統計の異なる値の数を使用して:
 12である 
13は、 コンテンツの統計フィールド、エイリアス値
 14  
15凝集集約= Aggregation.newAggregation(Aggregation.group( ( "値" .. AS "コンテンツ")COUNT() ));
 16  // クエリ
17のクライテリアクライテリア= 新しい新基準()WHERE( "条件")。(「条件」であります);
18 criteria.and( "条件二").is( "条件二" )。
19 aggregation.match(基準);リスト<マップ>マップ= mongoTemplate.getCollection( "COLLECTIONNAME" ).aggregate(集約)。
20  
21  
22  另一种写法
 23の 
24基準基準= 新規。クライテリア()ここで、( "条件一")は.is( "条件一" )。
25 criteria.and( "条件二").is( "条件二" )。
26 Aggregation.sort(ソート)、Aggregation.limit(10 27集約集約= Aggregation.newAggregation(Aggregation.match(基準)、Aggregation.group( "コンテンツ")。(カウント)。( "値"という)、アグリゲーション.sort(ソート)、Aggregation.limit(10 ))。
28リスト<DBObjectを> PVS = mongoTemplate.aggregate(集約、 "COLLECTIONNAME"、DBObjectを。クラス).getMappedResults();
 29  
30  
31れる のクエリMongoのページング:
 32  
33で 直接(スキップ)を加えた制限は、()タブを達成することができ、しかし、大量のデータの場合には、この方法は、欠陥の性能である
 34  
35すべての私の最適化を次のように記録に最後のレコードID、クエリとしてクエリの次のページいったん、クエリはこのIDよりも大きくすることができます、ソート値を設定ソーティング- 1は、降順、昇順を表します。
36  
37 [ DBObjectをクエリ= 新しい新しいBasicDBObject();
 38である( "条件"、 "条件" query.put );
 39  のDBcursorのDBcursor;
 40  IF(ページ1 == == 0 || ||ページ。StringUtil.isStrEmpty(lastId )){
 41     DBcursor = mongoTemplate.getCollection(APPID).find(クエリ).sort( BasicDBObject( "名前"、-1))(サイズ*(ページ- 1スキップします。))の制限(サイズ)。
42 } {
 43      BasicDBObject decoment = 新しい BasicDBObject( "$のGT"、たObjectId(lastId))。
44      query.put( "_ ID" 、decoment)。
45      のDBcursor = mongoTemplate.getCollection(APPID).find(クエリ).sort( BasicDBObject( "名前"、-1))スキップ(サイズ*(ページ- 1。 ))リミット(サイズ)。
46  }
 47  リターン dbCursor.toArray()。
コードの表示

 

おすすめ

転載: www.cnblogs.com/lljboke/p/11367408.html