Mongodb $unwind 聚合不起作用

Gow*_*kan 2 mongodb mongodb-query aggregation-framework

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

[
{$unwind : "$items" },
{$unwind : "$items.discounts"},    
{$unwind : "$payments"},
{$unwind : "$payments.items"},  
{$unwind : "$payments.refunds"}
]
Run Code Online (Sandbox Code Playgroud)

它起作用了,然后我只是添加了以下条件来过滤数据

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" },
{$unwind : "$items.discounts"},    
{$unwind : "$payments"},
{$unwind : "$payments.items"},  
{$unwind : "$payments.refunds"}
]
Run Code Online (Sandbox Code Playgroud)

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

[
{$match : { "updatedtime": { $gt: 1514764800000}}}
]
Run Code Online (Sandbox Code Playgroud)

它再次起作用。

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" }
]
Run Code Online (Sandbox Code Playgroud)

作品。

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" },
{$unwind : "$items.discounts"}
]
Run Code Online (Sandbox Code Playgroud)

不工作。谁能告诉我是我做错了什么。有没有其他方法可以做到这一点?

Joh*_*yHK 7

如果$unwinditems.discounts这样的数组字段是空的,则结果输出是没有文档。要保留这些文档,请启用以下preserveNullAndEmptyArrays选项$unwind

[
{$match : { "updatedtime": { $gt: 1514764800000}}},
{$unwind : "$items" },
{$unwind : {path: "$items.discounts", preserveNullAndEmptyArrays: true}}
]
Run Code Online (Sandbox Code Playgroud)