1

基本的な質問。mongodb findコマンドは、コレクションに追加された順序で常にドキュメントを返しますか?そうでない場合、どのようにして選択ドキュメントを正しい順序で実装することができますか?選別?しかし、ドキュメントが同時に追加され、作成日が同じであるが、まだ注文があった場合はどうなりますか。

4

1 に答える 1

2

ええ、そうです...正確には違います。ドキュメントはデフォルトで自然な順序で並べ替えられます。これは、最初はドキュメントがディスクに保存される順序であり、実際にドキュメントがコレクションに追加された順序です。ただし、この順序は決定論的ではありません。更新操作後にこれらのドキュメントが大きくなると、ドキュメントがディスク上に移動する可能性があり、現在のスペースに収まらなくなる可能性があるためです。このようにして、最初の(挿入)順序が変更される場合があります。

挿入順序の並べ替えを保証する方法は、_idのタイプがObjectIdである限り、{_ id:1}で並べ替えることです。これにより、昇順で並べ替えられたドキュメントが返されます。

書き込み操作は同時に実行されません。書き込みロックはデータベースレベル(V 2.4以降)で適用されます。_idの最初の4バイトは挿入タイムスタンプであり、最後の3桁は、同じタイムスタンプを持つObjectIdインスタンスを区別(およびソート)するために使用されるランダムカウンターです。

_idフィールドはデフォルトでインデックス付けされています

于 2013-03-17T23:08:16.210 に答える