2017-11-11 359 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

我回到了我在开始时得到的同样的错误 –

相关问题