使用数组的操作

如果要使用数组中的数据条目,首先需要展开数组。展开操作为数组中的每个条目创建一个文档。当你拥有大量阵列的文档时,你会看到文档数量激增。

{ "_id" : 1, "item" : "myItem1", sizes: [ "S", "M", "L"] }
{ "_id" : 2, "item" : "myItem2", sizes: [ "XS", "M", "XL"] }
    
db.inventory.aggregate( [ { $unwind : "$sizes" }] )

一个重要的通知是,当文档不包含数组时,它将丢失。从 mongo 3.2 及以上版本中添加了一个展开选项 preserveNullAndEmptyArrays。此选项可确保在缺少阵列时保留文档。

{ "_id" : 1, "item" : "myItem1", sizes: [ "S", "M", "L"] }
{ "_id" : 2, "item" : "myItem2", sizes: [ "XS", "M", "XL"] }
{ "_id" : 3, "item" : "myItem3" }
    
db.inventory.aggregate( [ { $unwind : { path: "$sizes", includeArrayIndex: "arrayIndex" } }] )