Mongoskin 1.4.4: настройка batchSize в запросе агрегации

Одно из изменений в последней версии MongoDB (2.6) приводит к тому, что курсор возвращается в результате запроса агрегации. Это очень полезно, поскольку позволяет более эффективно обрабатывать очень большие наборы результатов запросов. У меня проблемы с использованием этого в моем приложении узла, хотя.

Как я могу получить пакет результатов, используя mongoskin?

Я пробовал:

var db = require('mongoskin').db('mongodb://localhost:27017/test');
var collection = db.collection("ag");
var cursor = collection.aggregate([{ $group : {_id: '$a'}}])
cursor.toArray(function(err, result) {
  console.log(result);
  db.close();
});

что приводит к:

TypeError: Object #<SkinClass> has no method 'toArray'
    at Object.<anonymous> (/Users/.../aggregation.js:5:8)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

Я обнаружил, что с родным драйвером работает приведенный ниже код (используя get и настройку batchSize):

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
  var collection = db.collection("ag");

  var cursor = collection.aggregate([{ $group : {_id: '$a'}}], {cursor:{batchSize:100}});
  cursor.get(function(err, result) {
    console.log(result);
    db.close();
  });
});

все же это терпит неудачу с mongoskin.

Является ли получение всего результата агрегации единственным вариантом для mongoskin (см. Ниже) или мне чего-то не хватает?

var cursor = collection.aggregate([{ $group : {_id: '$a'}}], function(err, result) {

0 ответов

Другие вопросы по тегам