《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" ] }