【发布时间】:2014-11-20 16:51:04
【问题描述】:
在这种情况下,How do I keep documents in aggregation with $unwind 聚合可以省略,但如果您有更复杂的情况需要聚合框架怎么办?你怎么能保留这些文件,而仍然解散那些有非空列表的文件?
我的案例涉及具有多个阶段(匹配、展开、项目、匹配、组......)的聚合管道,我根本无法回退到普通的“匹配”,因为这些嵌套数组需要以报告的形式呈现(JasperReports )。我首先认为$unwind empty array 可以解决我的问题,但它不会因为这个数组需要为空,因为我稍后在 JasperReport 中对这些值进行分组并按原样显示它们。
我希望我已经足够清楚了。 有什么想法吗?
【问题讨论】:
-
在展开长度为 k 的数组时,聚合管道会生成 k 个文档,包括如果 k = 0。要保留文档,您可以将一个虚拟值填充到数组(或投影数组)中。询问您的具体案例可能会更有成效,因为您的问题的完整背景可能会提供其他选择。
-
这样的问题似乎太宽泛了。请通过发布示例文档和预期输出以及您尝试过的内容来缩小范围。
标签: mongodb aggregation-framework