![](/img/trans.png)
[英]How to Update An Array of Subdocuments on a MongoDB Collection in MeteorJS
[英]How to group data with date string inside subdocuments under an array mongodb
我的文件具有這種結構
_id: "adklkj389723jk23KLJjl2LU92kJO387"
"impressions": [{
"_id": ObjectId("5b74799535f2722494075981"),
"country": "GB",
"impression_count": 22,
"_campaignid": ObjectId("5b72d78847db422040ee60cf"),
"date": ISODate("2018-08-15T19:00:00Z")
},
{
"_id": ObjectId("5b74799d35f2722494075982"),
"country": "GB",
"impression_count": 22,
"_campaignid": ObjectId("5b72d7bf47db422040ee60d1"),
"date": ISODate("2018-08-15T19:00:00Z")
},
{
"_id": ObjectId("5b7479a735f2722494075983"),
"country": "GB",
"impression_count": 20,
"_campaignid": ObjectId("5b72d79e47db422040ee60d0"),
"date": ISODate("2018-08-15T19:00:00Z")
}
]
我想做什么我想將印象與它們創建的日期進行分組,我將日期另存為db中的字符串以執行此操作,我正在使用此查詢
db.advertisers.aggregate([{
$group: {
_id: "$impressions.date",
count: {
$sum: "$impressions.impression_count"
}
}
}]).pretty()
結果
這個查詢給了我這樣的結果,所以我做錯了什么?
{
"_id": [
ISODate("2018-08-15T19:00:00Z"),
ISODate("2018-08-15T19:00:00Z"),
ISODate("2018-08-15T19:00:00Z")
],
"count": 1
}
由於您要處理數組,因此您可能希望unwind
impressions
:
db.collection.aggregate([
{
"$unwind": "$impressions"
},
{
$group: {
_id: "$impressions.date",
count: {
$sum: "$impressions.impression_count"
},
}
}
])
這將為您提供:
[
{
"_id": ISODate("2018-08-15T19:00:00Z"),
"count": 64
}
]
你可以在這里看到 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.