参考 > 参考 > 经营者 > 聚合管道运营商 > $ push(聚合)
在本页面
$push
返回所有值的数组,这些值是通过将表达式应用于按键共享同一组文档的一组文档中的每个文档而得到的。
$push仅在$group舞台上可用 。
$group
$push 具有以下语法:
{ $push: <expression> }
有关表达式的更多信息,请参见表达式。
从4.2.3版本开始(以及4.0.14、3.6.17版),$push内存限制为100 MiB(100 * 1024 * 1024字节),即使 db.collection.aggregate()使用allowDiskUse:true运行。
db.collection.aggregate()
有关更多信息,请参见聚集管道限制。
考虑sales包含以下文档的集合:
sales
{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-01-01T08:00:00Z") } { "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-02-03T09:00:00Z") } { "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 5, "date" : ISODate("2014-02-03T09:05:00Z") } { "_id" : 4, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-02-15T08:00:00Z") } { "_id" : 5, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-02-15T09:05:00Z") } { "_id" : 6, "item" : "xyz", "price" : 5, "quantity" : 5, "date" : ISODate("2014-02-15T12:05:10Z") } { "_id" : 7, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-02-15T14:12:12Z") }
date以下操作按字段的日期和年份分组,以下操作使用$push累加器来计算每组的物料清单和销售数量:
date
db.sales.aggregate( [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, itemsSold: { $push: { item: "$item", quantity: "$quantity" } } } } ] )
该操作返回以下结果:
{ "_id" : { "day" : 46, "year" : 2014 }, "itemsSold" : [ { "item" : "abc", "quantity" : 10 }, { "item" : "xyz", "quantity" : 10 }, { "item" : "xyz", "quantity" : 5 }, { "item" : "xyz", "quantity" : 10 } ] } { "_id" : { "day" : 34, "year" : 2014 }, "itemsSold" : [ { "item" : "jkl", "quantity" : 1 }, { "item" : "xyz", "quantity" : 5 } ] } { "_id" : { "day" : 1, "year" : 2014 }, "itemsSold" : [ { "item" : "abc", "quantity" : 2 } ] }