2017-11-11 247 views
0

這是MongoDB中一個很常見的問題,但我找不到任何可以幫助的東西。我正在試圖聚合兩個包含一個公共密鑰的集合,但是我得到了「超出最大文檔大小」的錯誤。超過最大文檔大小

膳食集合是指每個特定個體消耗的膳食,而HasConsumed是該個體在膳食中食用的每種食物。

膳食包含171318項,而HasConsumed包含541526項。

這裏的查詢:在您的管道

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

是否需要從參加集中的所有數據是不是從你的問題不清楚。如果沒有,您可以嘗試通過使用$ match和$ project運算符進行篩選來減少文檔大小。 –

+0

我確實需要所有的數據。作爲一項測試,我確實嘗試將集合的大小除以3,但仍然無效。 –

回答

1

使用allowDiskUse選項:

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


    ],{ allowDiskUse: true}) 
+0

無法識別的管道階段名稱:'allowDiskUse' –

+0

更正了答案 – Astro

+0

我回到了我在開始時得到的同樣的錯誤 –

相關問題