MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Vermeiden Sie die Gesamtgrenze von 16 MB

Das Problem besteht darin, dass sich der native Treiber von der standardmäßigen Arbeitsweise der Shell-Methode dadurch unterscheidet, dass die „Shell“ tatsächlich ein „Cursor“-Objekt zurückgibt, wo der native Treiber diese Option „explizit“ benötigt.

Ohne "Cursor", .aggregate() gibt ein einzelnes BSON-Dokument als Array von Dokumenten zurück, also verwandeln wir es in einen Cursor, um die Einschränkung zu umgehen:

let cursor = collection.aggregate(
  [{ "$group": { "_id": "$internalNumber" } }],
  { "cursor": { "batchSize": 500 } }
);

cursor.toArray((err,docs) => {
   // work with resuls
});

Dann können Sie reguläre Methoden wie .toArray() verwenden um die Ergebnisse zu einem JavaScript-Array zu machen, das auf dem 'Client' nicht die gleichen Beschränkungen hat, oder andere Methoden zum Iterieren eines 'Cursors'.