sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Qué métodos de cursor de agregación son compatibles con los controladores de Nodejs?

Lo que realmente se devuelve del agregado con un cursor es una interfaz de flujo de transformación de nodo con algunos otros métodos convenientes, en particular:

explain: [Function],
get: [Function],
getOne: [Function],
each: [Function],
next: [Function],

Que puede obtener simplemente volcando el objeto del cursor usando console.log . Esos deberían explicarse por sí mismos con get() siendo el método equivalente a .toArray() .

Dado que esta es una interfaz de transmisión estándar, los métodos y los controladores de eventos están disponibles según esta interfaz, así que con un ejemplo:

  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" );
    });

  });

El evento de "datos" se activa con cada iteración del cursor y las propiedades del objeto mostrarán si la transmisión está completa o si aún se está iterando, y así sucesivamente.