0

コレクション学生に次のドキュメントが含まれているとします。

{name:”Nithin”,age:23} 

{name:”Nithin”,age:25} 

{name:”Nithin”,age:28} 

{name:”Nithin”,age:12} 

「Nithin」という名前のすべての文書を age=60 として更新したいと考えています。次のクエリを実行すると、最初のドキュメントのみが更新されます。

db.student.update({name:”Nithin”},{age:60})

すべてのドキュメントを更新するには、クエリを使用する必要があります

db.student.update({name:”Nithin”},{age:60},false,true) 

or 

db.student.update({name:”Nithin”},{age:60},multi:true)

デフォルトで mongodb がdb.student.update({name:”Nithin”},{age:60})を実行してすべてのドキュメントを更新しない理由は何ですか? すべてのドキュメントを更新するために個別のクエリを作成する動機は何ですか? パフォーマンスの向上ですか?

4

3 に答える 3

2

もともと、MongoDB (1.1 より前) の初期の頃は、複数のドキュメントを更新することはできませんでした。これは 1.1.3 頃に追加された機能です。

これは、リリース ノートNew Feature 268で確認できます。

以前のバージョンとの下位互換性のために、これはデフォルトでは有効になっていないと思います。

于 2013-05-22T08:34:30.873 に答える
0

その理由の一部は、SQL の世界から来た人々が複数ドキュメントの更新を分離されたトランザクションと考えるのを避けるためかもしれません。

実際、長い更新中、MongoDB は定期的に他のクエリに制御を渡し、同じデータセットを変更する可能性があります。

したがって、明示的に設定multi=trueすることで、この事実をいくらか認めていることになります (まあ、そうではありませんが、それが精神だと思います...)

于 2013-05-22T08:48:32.717 に答える