ドキュメントのフィルタリング
重要
Cluster-to-Cluster Sync betaプログラム
この機能はmongosync
beta {0 でのみ使用できます。詳しくは、「 Cluster-to-Cluster Sync betaプログラム 」を参照してください。
mongosync
beta 1.8 以降では、特定の条件に基づいてドキュメントを選択的に移行できます。 宛先クラスターに移行するドキュメントをさらに制限するには、ドキュメント フィルタリングと名前空間フィルタリングを組み合わせることができます。
ドキュメントフィルタリングを使用するには、ソースクラスターと宛先クラスターの両方でサポートされている MongoDB バージョンを使用する必要があります。
構文
start
API エンドポイントは、次の構文を持つ任意のdocumentFilter
パラメータを受け入れます。
"documentFilter" : { "field" : <field-name>, "matchValues" : [<field-values>] }
パラメーター フィールド
フィールド | タイプ | 必要性 | 説明 |
---|---|---|---|
field | 文字列 | 必須 | フィールド名 |
matchValues | 配列 | 必須 | 移行するためにドキュメントが持つ必要があるフィールド値。 |
動作
制限
field
名前にドット(.
)またはドル記号($
)を含めることはできません。matchValues
配列項目は、次の BSON types になります。すべての数値型
バイナリ
ブール値
日時
ObjectID
文字列
また、移行中にフィルターにドキュメントを含めたり、フィルターからドキュメントを移動したりすることはできません。
ドキュメントフィルターに string と、デフォルト以外の照合順序を持つ移行済みコレクションが少なくとも 1 つ含まれている場合、
mongosync
はすぐに失敗します。プログレスAPI エンドポイントを呼び出し、 ドキュメント フィルターを使用すると、
estimatedTotalBytes
レスポンス フィールドにはnull
が返されます。宛先クラスターには、フィルターに一致する既存のデータが含まれてはなりません。
ドキュメント フィルターを指定して、
reversible
フラグをtrue
に設定することはできません。
検証
ドキュメント フィルタリングは 埋め込み検証子 と互換性がありません。検証とドキュメント フィルタリングの両方を有効にする場合、 /start コマンドはエラーを返します。
詳細については、「データ転送を確認する 」を参照してください。
注意
無効なドキュメント フィルター処理
開始リクエストで無効なドキュメントフィルターを指定した場合、mongosync
はクラッシュしません。代わりに、開始リクエストは失敗します。 mongosync
を再起動する必要なく、有効なドキュメントフィルターを使用して開始リクエストを再発行できます。
例
ドキュメント フィルターで を開始mongosync
次の例では、 cluster0
とcluster1
の間で同期ジョブを開始しています。 ソースクラスターはcluster0
で、宛先クラスターはcluster1
です。
cluster0
には、 restaurants
、 attractions
、 lodging
コレクションが含まれるtravel
データベースが含まれています。 restaurants
、 attractions
、 lodging
コレクションのドキュメントにはすべてcity
フィールドが含まれています。
この例のdocumentFilter
ドキュメントは、 city
フィールドがLos Angeles
、 New York
、またはSan Francisco
のいずれかであるドキュメントをフィルタリングします。
"documentFilter" : { field : "city", matchValues: [ "Los Angeles", "New York", "San Francisco" ] }