2017-11-11 2 views
0

Dies ist ein ziemlich häufiges Problem in MongoDB, aber ich konnte nichts finden, was helfen könnte. Ich versuche, zwei Sammlungen zu sammeln, die einen gemeinsamen Schlüssel enthalten, aber ich bekomme einen Fehler "maximale Dokumentgröße überschritten".Maximale Dokumentgröße überschritten

Die Mahlzeit Sammlung ist jede Mahlzeit von einer bestimmten Person konsumiert, während HasConsumed ist jedes Essen, das diese Person während der Mahlzeit gegessen hat.

Mahlzeit enthält 171318 Elemente, während HasConsumed 541526 Elemente enthält.

Hier ist die Abfrage:

db.getCollection('Meal').aggregate(
    { 
     $lookup: 
     { 
      from: "HasConsumed", 
      localField: "nomen_nojour_tyrep", 
      foreignField: "nomen_nojour_tyrep", 
      as: "conso" 
     }}, 
     { $out : "hasConsumed" } 
    ) 
+0

Es ist nicht klar aus Ihrer Frage ist, ob Sie alle Daten aus den verbundenen Sammlungen müssen. Wenn nicht, können Sie versuchen, die Dokumentgröße zu reduzieren, indem Sie mit den Operatoren $ match und $ project filtern. –

+0

Ich brauche alle Daten. Als Test habe ich versucht, die Größe der Sammlung um 3 zu teilen, aber es hat immer noch nicht funktioniert. –

Antwort

1

Verwenden allowDiskUse Option in der Pipeline:

db.getCollection('Meal').aggregate([ 
    { 
     $lookup: 
     { 
      from: "HasConsumed", 
      localField: "nomen_nojour_tyrep", 
      foreignField: "nomen_nojour_tyrep", 
      as: "conso" 
     }}, 
     { $out : "hasConsumed" } 


    ],{ allowDiskUse: true}) 
+0

Unbekannter Name der Pipelinestufe: 'allowDiskUse' –

+0

hat die Antwort – Astro

+0

korrigiert. Ich komme auf denselben Fehler zurück, den ich am Anfang erhalten habe –

Verwandte Themen