《mongodb aggregation $addToSet》要点:
本文介绍了mongodb aggregation $addToSet,希望对您有用。如果有疑问,可以联系我们。
相关主题:非关系型数据库
《mongodb aggregation $addToSet》是否对您有启发,欢迎查看更多与《mongodb aggregation $addToSet》相关教程,学精学透。维易PHP学院为您提供精彩教程。
上篇文章学习了$unwind,作用是用来拆分成多条数据的,今天学的$addToSet是将多条数据合并成一条.
我们看具体怎么使用
首先准备一批销售数据
{
"_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:12:00Z")
}
然后我们想要按每年的天数来统计item的数量
首先要使用日期函数dayOfYear和year来分组
然后用addToSet将多个item合并
db.sales.aggregate(
[
{
$group:
{
_id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } },
itemsSold: { $addToSet: "$item" }
}
}
]
)
最终结果如下:
{ "_id" : { "day" : 46, "year" : 2014 }, "itemsSold" : [ "xyz", "abc" ] }
{ "_id" : { "day" : 34, "year" : 2014 }, "itemsSold" : [ "xyz", "jkl" ] }
{ "_id" : { "day" : 1, "year" : 2014 }, "itemsSold" : [ "abc" ] }