2012-04-05 8 views
0

Ich habe das aggregierte Framework von mongodb 2.1 erforscht. Und ich habe einen Test gemacht.wann mongodb aggregate framework zu verwenden?

var drugstore = { 
    id: 8600110, 
    name: "store1",  
    transaction_flow: [ 
     { 
     pepdate: 20120327, 
     create_date: "2012-3-27 16:36:33", 
     trace: "000256", 
     peopleid: "123456",   
     tranamt: 1000, 
     }, 
     { 
     pepdate: 20120405, 
     create_date: "2012-3-27 16:36:33", 
     trace: "000256", 
     peopleid: "123456",   
     tranamt: 1000, 
     } 
       ] 
}; 

nachdem ich 40 tausend Daten in transaction_flow eingefügt, ist der Mongodb abgestürzt. Und ich weiß, dass die Limit-Größe von Mongodb's Dokument 16 MB ist, jetzt ist die Drogerie-Sammlung 22 MB. Also die aggregierten Befehle, z. abwickeln, warum diesen Befehl entwerfen und wann zu verwenden?

+1

Haben Sie versucht, mit * across * Dokumente? Im Moment haben Sie nur ein massives Dokument. – Nik

+0

@Nik was ist über Dokument? – avatas

+1

Sie haben hier nur ein einziges Dokument - Drugstore und 40000 transaction_flows darin. Stattdessen, was Sie wahrscheinlich wollen, ist ein Dokument für Drogerie und 40000 verschiedene Dokumente (nicht verschachtelt in Drogerie) für transaction_flow einfügen. Mongo funktioniert gut mit vielen kleinen Dokumenten. – Nik

Antwort

0

Die maximale Größe für jedes Ergebnis von MongoDB-Befehlen ist auf 64 MB begrenzt. Es gibt eine fortlaufende ticket, die eine out-Option ähnlich dem map reduce-Befehl hinzufügt, bei der Sie das Ergebnis möglicherweise in eine neue Sammlung ablegen können.

+0

Vielen Dank für Ihre Antwort, aber meine Frage ist das Sub-Array-Objekte eines Dokuments ist von 16 MB begrenzt, und es kann nicht meine Anforderungen erfüllen. – avatas

+0

@avatas: Das aktuelle Dokumentlimit (ab MongoDB 2.2) beträgt 16 MB, und dies ist auch die Grenze der Ergebnisse, die über das Aggregation Framework oder Map/Reduce mit 'inline'-Ausgabe zurückgegeben werden können. Wenn Sie versuchen, mehr als 16 MB manipulierte Ergebnisse zurückzugeben, möchten Sie Map/Reduce mit [Ausgabe an eine Sammlung] verwenden (http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-Outputoptions). – Stennie

Verwandte Themen