What aggregation cursor methods are supported by Nodejs drivers?
从 2.6 开始,Mongodb
例如,不能在聚合游标上运行
实际上从聚合中返回的是一个带有一些其他便利方法的节点转换流接口,特别是:
1 2 3 4 5 | explain: [Function], get: [Function], getOne: [Function], each: [Function], next: [Function], |
你可以通过简单地使用
因为这是一个标准的流接口,所以方法和事件处理程序可以根据这个接口使用,所以举个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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" 事件,对象的属性将显示流是完整的还是仍在迭代等等。