我有這樣的文件:
{
"platform":"android",
"install_date":20151029
}
- 平臺 - 可以從一個值的android | IOS |點燃| Facebook的。
- INSTALL_DATE - 有許多install_dates
也有許多領域。
目標:我正在計算每個平臺在特定日期的安裝次數。
所以我使用group by在聚合框架中,並通過平臺進行計數。文件應該像這樣的:
{
"install_date":20151029,
"platform" : {
"android":1000,
"ios": 2000,
"facebook":1500
}
}
我有這樣做:
db.collection.aggregate([
{
$group: {
_id: { platform: "$platform",install_date:"$install_date"},
count: { "$sum": 1 }
}
},
{
$group: {
_id: { install_date:"$_id.install_date"},
platform: { $push : {platform :"$_id.platform", count:"$count" } }
}
},
{
$project : { _id: 0, install_date: "$_id.install_date", platform: 1 }
}
])
這給像文件:
{
"platform": [
{
"platform": "facebook",
"count": 1500
},
{
"platform": "ios",
"count": 2000
},
{
"platform": "android",
"count": 1000
}
],
"install_date": 20151027
}
問題:
投影陣列單對象作爲「平臺」的$cond
運營商在$group
管道步驟評估基於平臺字段值計數的
你是說你有一個「串」斜線'/'separateed?還是這些「平臺」字段的可能值?這是一種非常不尋常的方式。其次,「零」數據的基本問題在這之前已經被問過很多次了,所以你看了?您不應該試圖使數據庫返回不存在的信息。請在此處明確結果目標。我知道你要求每個日期的所有平臺,但是究竟有多少日期,以及最終目的是什麼。所有這些都可以更容易地呈現出正確的響應。 –
@BlakesSeven:這些都是可能的值。有許多日期。它應該按日期進行分組並在該日期安裝設備。 –