+
95
-

回答

mongodb中$unwind可以解析输入文档中的数组字段,为每个元素输出一个文档。每个输出文档都是输入文档,数组字段的值被元素替换。如果字段值为null、缺失或数组为空,则$unwind不会输出文档。

语法:

{ $unwind: <field path> }

可以将文档传递给$unwind以指定各种行为选项。

{

$unwind:

{

path: <field path>,

includeArrayIndex: <string>,

preserveNullAndEmptyArrays: <boolean>

}

}

参数解析:

path:string类型,数组字段的字段路径。若要指定字段路径,请在字段名称前加上美元符号$并将其括在引号中。

includeArrayIndex:string类型,可选的。用于保存元素的数组索引的新字段的名称。新字段名称不能以美元符号$开头。

preserveNullAndEmptyArrays:boolean类型,可选的。如果为真,如果路径为空、丢失或数组为空,则$unwind输出文档。如果为false,如果路径为空、丢失或数组为空,则$unwind不输出文档。默认值为false。

示例用法

初始化数据:

db.inventory.insertOne({ "_id" : 1, "item" : "ABC1", sizes: [ "S", "M", "L"] })

示例:按照sizes字段拆分数据

db.inventory.aggregate( [ { $unwind : "$sizes" } ] )

结果:

{ "_id" : 1, "item" : "ABC1", "sizes" : "S" }

{ "_id" : 1, "item" : "ABC1", "sizes" : "M" }

{ "_id" : 1, "item" : "ABC1", "sizes" : "L" }

网友回复

我知道答案,我要回答