カーソルを使用してアグリゲートから実際に返されるのは、ノード変換ストリームインターフェース です。 他のいくつかの便利な方法、特に:
explain: [Function],
get: [Function],
getOne: [Function],
each: [Function],
next: [Function],
これは、console.log
を使用してカーソルオブジェクトをダンプするだけで取得できます。 。これらはget()
で自明である必要があります メソッドは.toArray()
と同等です 。
これは標準のストリーミングインターフェースであるため、メソッドとイベントハンドラーはこのインターフェースに従って使用できます。たとえば、次の例を使用します。
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost/test", function(err,db) {
var items = [];
var counter = 0;
var cursor = db.collection('tags').aggregate(
[
{ "$project": {
"t1": 1,
"t2": 1
}}
],
{ "cursor": { "batchSize": 25 } }
);
console.log( cursor );
cursor.on('data', function(data) {
console.log( this ); // dump the current state info
items.push( data );
counter++;
});
cursor.on('end', function() {
console.log( "Iterated " + counter + " times" );
});
});
「data」イベントはカーソルの反復ごとに発生し、オブジェクトのプロパティは、ストリームが完了したか、まだ反復しているかなどを示します。