sql >> Databáze >  >> NoSQL >> MongoDB

Vyhněte se Aggregate 16MB Limit

Problém je v tom, že nativní ovladač se liší od toho, jak metoda shellu funguje ve výchozím nastavení v tom, že „shell“ ve skutečnosti vrací objekt „cursor“, kde nativní ovladač tuto možnost „explicitně“ potřebuje.

Bez "kurzoru", .aggregate() vrací jeden dokument BSON jako pole dokumentů, takže jej změníme na kurzor, abychom se vyhnuli omezení:

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

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

Pak můžete použít běžné metody jako .toArray() vytvořit z výsledků pole JavaScript, které na 'klientovi' nesdílí stejná omezení, nebo jiné metody pro iteraci "kurzoru".



  1. Golang mgo získává prázdné předměty

  2. Skript se pokusil vytvořit globální proměnnou

  3. Spring Data MongoDB:Projekce a agregace

  4. Jak opravit VAROVÁNÍ při spuštění obrazu redis:alpine Docker