Mongodb $ unwind聚合无法正常工作

时间:2018-06-15 13:49:29

标签: mongodb mongodb-query aggregation-framework

我是mongodb聚合的新手。我的mongo文档有很多数组。我需要将其导出为平面文件。为此,我需要构建它。我尝试了以下聚合:

[
{$unwind : "$items" },
{$unwind : "$items.discounts"},    
{$unwind : "$payments"},
{$unwind : "$payments.items"},  
{$unwind : "$payments.refunds"}
]

有效,然后我添加了以下条件来过滤数据

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" },
{$unwind : "$items.discounts"},    
{$unwind : "$payments"},
{$unwind : "$payments.items"},  
{$unwind : "$payments.refunds"}
]

返回0行,我再次尝试使用match语句

[
{$match : { "updatedtime": { $gt: 1514764800000}}}
]

再次运作。

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" }
]

作品。

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" },
{$unwind : "$items.discounts"}
]

不工作。任何人都可以告诉我,我做错了什么。还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

如果您$unwind数组字段items.discounts为空,则结果输出不是文档。要保留这些文档,请启用preserveNullAndEmptyArrays的{​​{1}}选项:

$unwind