オンデマンドジョブの場合は、td query コマンドに --result / -r オプションを追加するだけです。ジョブが完了すると、結果がコレクションに書き込まれます。
$ td query --result 'mongodb://user:password@host:1234/database/collection' \
-w -d testdb "SELECT code, COUNT(1) FROM www_access GROUP BY code"スケジュールされたジョブの場合は、ジョブをスケジュールする際に --result / -r オプションを追加します。ジョブが実行されるたびに、結果が mytbl に書き込まれます。
$ td result:create mydb 'mongodb://user:password@host:1234/database'
$ td sched:create hourly_count_example "0 * * * *" \
-d testdb "select count(*) from www_access" --result mydb:mycollection結果出力先は、次の形式の URL で表されます:
mongodb://username:password@host/database/collection
mongodb://username:password@host:port/database/collection各項目の説明:
- mongodb は MongoDB への結果出力を識別します。
- username と password は MongoDB インスタンスへの認証情報です。
- hostname は MongoDB インスタンスのホスト名です。
- port は MongoDB インスタンスにアクセスするためのポート番号です。これはオプションです。
- database は宛先データベースの名前です。
- collection は宛先コレクションの名前です。
次のモードを使用して、データを追加または削除できます:
mongodb://user:password@host:1234/database/collection # append
mongodb://user:password@host:1234/database/collection?mode=append # append
mongodb://user:password@host:1234/database/collection?mode=replace # replace
mongodb://user:password@host:1234/database/collection?mode=truncate # truncate
mongodb://user:password@host:1234/database/collection?mode=update&unique=key1 # updateこれはデフォルトのモードです。クエリ結果はコレクションに追加されます。コレクションがまだ存在しない場合は、新しいコレクションが作成されます。
この方法はアトミックです。
コレクションが既に存在する場合、既存のコレクションの行はクエリ結果で置き換えられます。コレクションがまだ存在しない場合は、新しいコレクションが作成されます。
単一のトランザクションで次の3つのステップを実行することにより、アトミック性(コレクションのコンシューマーが常に一貫性のあるデータを持つようにする)を実現します。
- 一時コレクションを作成します。
- 一時コレクションに書き込みます。
- RENAME コマンドを使用して、既存のコレクションを一時コレクションで置き換えます。
この方法はアトミックです。
システムはまず既存のコレクションを切り捨て、次にクエリ結果を挿入します。コレクションがまだ存在しない場合は、新しいコレクションが作成されます。
REPLACE とは異なり、TRUNCATE はコレクションのインデックスを保持します。
この方法はアトミックです。
このモードは、MongoDB の find と「upsert」メソッドを使用します(MongoDB のドキュメントを参照)。簡単に言うと、ユニークインデックスまたは主キーで重複値が発生する場合を除き、行が挿入され、重複する場合は更新が実行されます。引数で指定したフィールドに既にユニークインデックスを作成していることを確認してください。このモードを使用する場合、unique オプションが必須です。
MongoDB はトランザクションをサポートしていないため、このモードではトランザクションのアトミック性を保証できません。
このオプションは update モードでのみ関連し、必須です。MongoDB コレクションを更新するために使用するユニークキーまたはキー(カンマ区切り)のカラム名を指定します。
例
mongodb://user:password@host:1234/database/collection?mode=update&unique=key1
mongodb://user:password@host:1234/database/collection?mode=update&unique=key1,key2,key3