Docs Menu
Docs Home
/
データベース マニュアル
/ / /

でのカーソルの反復 mongosh

db.collection.find()メソッドはカーソルを返します。 ドキュメントにアクセスするには、カーソルを反復する必要があります。 ただし、 mongoshでは、返されたカーソルがvarキーワードを使用して変数に割り当てられていない場合、カーソルは自動的に最大20回まで反復されます[ 1 ]が最初の まで出力します。結果の20ドキュメント:

次の例で、カーソルを手動で反復処理してドキュメントにアクセスする方法や、イテレータ インデックスを使用する方法を説明します。

mongosh では、 find() メソッドから返されたカーソルを var キーワードを使用して変数に割り当てると、カーソルは自動的に反復されません。

以下の例のように、shell で cursor 変数を呼び出して、最大 20 回繰り返し [1]、一致するドキュメントを出力できます。

var myCursor = db.users.find( { type: 2 } );
myCursor

また、次の例のように、カーソル メソッド next() を使用してドキュメントにアクセスできます。

var myCursor = db.users.find( { type: 2 } );
while (myCursor.hasNext()) {
print(tojson(myCursor.next()));
}

代わりの出力操作として、printjson() ヘルパー メソッドを使用して print(tojson()) を置き換えることを検討してください。

var myCursor = db.users.find( { type: 2 } );
while (myCursor.hasNext()) {
printjson(myCursor.next());
}

次の例のように、カーソル メソッド forEach() を使用してカーソルを反復処理し、ドキュメントにアクセスできます。

var myCursor = db.users.find( { type: 2 } );
myCursor.forEach(printjson);

カーソル メソッドの詳細については、「 JavaScript カーソル メソッド」およびドライバーのドキュメントを参照してください。

[1]12DBQuery.shellBatchSize 属性を設定して、ドキュメント数のデフォルト値 20 を変更できます。

mongosh では、次のように toArray() メソッドを使用してカーソルを反復処理し、ドキュメントを配列で返すことができます。

var myCursor = db.inventory.find( { type: 2 } );
var documentArray = myCursor.toArray();
var myDocument = documentArray[3];

toArray() メソッドは、カーソルによって返されたすべてのドキュメントを RAM にロードします。そのため、toArray() メソッドはカーソルを使い果たします。

さらに、一部のドライバーでは、カーソルのインデックス(つまり、cursor[index])を使用してドキュメントにアクセスできます。これは、最初に toArray() メソッドを呼び出し、次に結果の配列のインデックスを使用するショートカットです。

次の例で考えてみます。

var myCursor = db.users.find( { type: 2 } );
var myDocument = myCursor[1];

myCursor[1] は次の例と同等です。

myCursor.toArray() [1];

戻る

Cursors

項目一覧