35.7.5. その他の操作


35.7.5.1. aggregate

ボディーに含まれる指定のパイプラインで集約を実行します。集約は長く重い操作になる可能性があります。注意して使用してください。

// route: from("direct:aggregate").to("mongodb:myDb?database=science&collection=notableScientists&operation=aggregate");
List<Bson> aggregate = Arrays.asList(match(or(eq("scientist", "Darwin"), eq("scientist",
        group("$scientist", sum("count", 1)));
from("direct:aggregate")
    .setBody().constant(aggregate)
    .to("mongodb:myDb?database=science&collection=notableScientists&operation=aggregate")
    .to("mock:resultAggregate");
Copy to Clipboard Toggle word wrap

次の IN メッセージヘッダーをサポートします。

Expand
ヘッダーのキークイック定数説明 (MongoDB API ドキュメントから抜粋)想定されるタイプ

CamelMongoDbBatchSize

MongoDbConstants.BATCH_SIZE

バッチごとに返すドキュメントの数を設定します。

int/Integer

CamelMongoDbAllowDiskUse

MongoDbConstants.ALLOW_DISK_USE

集約パイプラインステージを有効にして、データを一時ファイルに書き込みます。

boolean/Boolean

デフォルトでは、すべての結果のリストが返されます。これは、結果のサイズによってはメモリーに大きくなる可能性があります。より安全な代替手段は、outputType=MongoIterable を設定することです。次のプロセッサーでは、メッセージ本文に iterable が表示されます。これにより、結果を 1 つずつステップスルーできます。したがって、バッチサイズを設定し、反復可能を返すと、結果を効率的に取得および処理できます。

以下に例を示します。

List<Bson> aggregate = Arrays.asList(match(or(eq("scientist", "Darwin"), eq("scientist",
        group("$scientist", sum("count", 1)));
from("direct:aggregate")
    .setHeader(MongoDbConstants.BATCH_SIZE).constant(10)
    .setBody().constant(aggregate)
    .to("mongodb:myDb?database=science&collection=notableScientists&operation=aggregate&outputType=MongoIterable")
    .split(body())
    .streaming()
    .to("mock:resultAggregate");
Copy to Clipboard Toggle word wrap

.split (body () )を呼び出すと、ルートを 1 つずつダウンしてエントリーを送信するだけで十分ですが、最初にすべてのエントリーをメモリーにロードすることに注意してください。そのため、.streaming () を呼び出して、バッチでデータをメモリーに読み込む必要があります。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat