MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Quelles méthodes de curseur d'agrégation sont prises en charge par les pilotes Nodejs ?

Ce qui est réellement renvoyé de l'agrégat avec un curseur est une interface de flux de transformation de nœud avec quelques autres méthodes pratiques, notamment :

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

Que vous pouvez obtenir en vidant simplement l'objet curseur à l'aide de console.log . Ceux-ci devraient être explicites avec le get() méthode étant équivalente à .toArray() .

Puisqu'il s'agit d'une interface de streaming standard, les méthodes et les gestionnaires d'événements sont disponibles selon cette interface, donc avec un exemple :

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

  });

L'événement "data" est déclenché à chaque itération du curseur et les propriétés de l'objet indiqueront si le flux est terminé ou toujours en itération, etc.