Wie könnte ich Aggregation schreiben, ohne die maximale Dokumentgröße zu überschreiten?

8

Ich habe die exceeds maximum document size problem -Ausnahme von der Abfrage wie folgt erhalten:

%Vor%

Ich habe es behoben, indem ich den Operator $project hinzugefügt habe,

Aber was ist, wenn das Dokument immer noch über 16MB liegt, obwohl ich $project verwende?

Was kann ich tun? irgendeine Idee ? Danke

%Vor%

Ausnahme

%Vor%     
newBike 15.04.2015, 07:54
quelle

3 Antworten

25

Standardmäßig wird das Ergebnis von Aggregationen in einem einzelnen BSON-Dokument an Sie zurückgegeben, von wo die Größenbeschränkung herkommt. Wenn Sie mehr als das zurückgeben müssen, können Sie entweder:

  • Lassen Sie die Ergebnisse in einer Sammlung ausgeben. Sie tun dies, indem Sie Ihre Pipeline mit

    abschließen

    {"$ out": "Sammlungsname"}

    Sie fragen dann diese Sammlung als normal ab (Sie müssen sie selbst löschen, wenn Sie damit fertig sind)

  • Die Ergebnisse werden als Cursor zurückgegeben, indem Sie useCursor=True angeben, wenn Sie das Aggregat aufrufen.

Beide Optionen benötigen mongodb 2.6: Wenn Sie mongodb 2.4 noch immer ausführen, ist dies nur eine grundlegende Grenze für Aggregationen.

    
Frederick Cheung 15.04.2015, 08:08
quelle
3

Da @Frederick sagte, dass mindestens mongo 2.6 benötigt wird, hier ist der Link von der Mongo-Dokumentation, die ähnlich wie runCommand funktioniert, aber mit db.collection.aggreagate, beachte, dass für die Dokumentbegrenzung die Option "cursor" verwendet wird, für die Sortierbeschränkung die Option "allowDiskUse".

    
Ahmet Yeşil 19.04.2016 13:25
quelle
-5

Verwenden Sie das folgende Snippet

%Vor%

here allowDiskUse hilft dabei, Daten mit mehr als 16 MB zu finden

    
Dineshaws 15.04.2015 08:10
quelle

Tags und Links