sql >> Databasteknik >  >> NoSQL >> MongoDB

Undvik sammanlagd 16MB-gräns

Problemet är att den inbyggda drivrutinen skiljer sig från hur skalmetoden fungerar som standard genom att "skalet" faktiskt returnerar ett "markör"-objekt där den inbyggda drivrutinen behöver detta alternativ "explicit".

Utan en "markör", .aggregate() returnerar ett enda BSON-dokument som en uppsättning dokument, så vi förvandlar det till en markör för att undvika begränsningen:

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

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

Sedan kan du använda vanliga metoder som .toArray() att göra resultaten till en JavaScript-array som på 'klienten' inte delar samma begränsningar, eller andra metoder för att iterera en "markör".



  1. (MongoDB Java) $push in i array

  2. Ordbok<sträng, objekt>-till-BsonDokumentkonvertering som utelämnar _t-fält

  3. få objekt från redis utan eval?

  4. Redis datastrukturdesign för sortering av tidsbaserade värden