sql >> データベース >  >> NoSQL >> MongoDB

Mongoアグリゲーションフレームワーク:最終段階の$ out操作のロックレベルはどれくらいですか?

    MongoDBのバージョンに応じて、コレクションまたは古いデータベースレベル、あるいはWiredTigerストレージエンジンを使用したドキュメントレベルのいずれかである可能性が高い、一定レベルのロックが常にあります。 $out ただし、書き込みは生成されないため、個々のドキュメントはパイプラインから出力され、一度にすべてではないため、各更新はドキュメントごとにアトミックになります。

    mapReduceコマンドでさえこのオプションがあります 、mapReduceの出力コレクションが同じ動作を示す条件として「nonAtomic」を設定できます。

    $outで注意すべき1つのこと 「置換」モードを使用すると、そのステージが実行されるため、コレクションからすべてのドキュメントが削除されます(既存のインデックスは置換されません)。したがって、「置換」セットで指定されたコレクションから読み取りまたは書き込みを行おうとすると、集計操作の進行中に失敗する(または予期しない結果が生じる)可能性が非常に高くなります。

    シャーディングされたコレクションとキャップされたコレクションに関連するその他の制限は、ドキュメントに記載されています。




    1. .ssh/authorized_keysへのRedis書き込み

    2. mongodbアグリゲートでのみ最新のサブドキュメントを含むドキュメントを返す

    3. RestivusとCurlで1つのドキュメントだけを見つける方法

    4. MongoDB sort()