0

アプリケーションのデータベースとしてMongoDBを使用しています

MongoDBの検索操作について質問があります。

データベースに存在するコレクションのシンボルと言うフィールドに2つまたは3つの同じレコードがあると仮定します。

db.collection.find({"シンボル": "GOOG"})

Mongo DBはどのような基準で最初のレコードを表示しますか?

編集部分

テスト環境と本番環境に同じデータでMongoDBを存在させています。

私の質問は、

私がする時

db.bios.find({"name": "FOOGY"})

2つの環境で表示されるデータ(最初のレコード)に違いがありますか?

同じコマンドを発行したときに2つの環境で表示されるデータにバリエーションがある理由を教えてください

db.bios.find({"name": "FOOGY"})

どのレコードを最初に蒔くべきかという親指のルールはありますか?

4

3 に答える 3

3

明示的にソートしない限り、ディスクに保存される順序は何でもかまいません(自然順序と呼ばれます)。返されるレコードの順序が気になる場合は、にsortオプションを指定してくださいfind

更新された質問に対処するために:はい、同じドキュメントを別々のMongoDBインスタンスに保存している場合、それらは間違いなく互いに異なるもので戻ってくる可能性があります。単一のMongoDbインスタンスでも、更新のためにドキュメントがディスク上に再配置されるため、時間の経過とともに異なる順序でドキュメントを返す可能性があります。

于 2012-12-17T18:33:53.983 に答える
0

レコードを見つけた順序で返します。ランダムではありませんが、予測もできません。パターンを見つけたとしても、何らかの理由で突然完全に異なる可能性があります。特定の順序が必要な場合は、結果を並べ替えるか、クエリに一意のインデックスを含めてfindOne()を使用します。

于 2012-12-17T18:47:08.917 に答える
0

ドキュメントは実際には順序ではなく検索順に戻ってきます。前述のように、順序$naturalについて$naturalは、ずっと前にGoogleグループで質問したところ、同じではありません。

検索順序にはランダム性の要素がありますが、完全にランダムではありません。

于 2012-12-17T18:48:59.440 に答える