[英]Find an average day count in the array in mongo
假設我們在聚合管道中有一個數組:
{
dates: [
"2019-01-29",
"2019-01-29",
"2019-01-29",
"2019-01-29",
"2019-02-06",
"2019-02-06",
"2019-02-06",
"2019-02-08",
"2019-06-04",
"2019-06-25",
"2019-07-26",
"2019-08-15",
"2019-08-15",
]
}
如何在這樣的數組中找到平均天數?
管道的下一階段應該如下所示:
dates : {
"2019-01-29": 4,
"2019-02-06": 3,
"2019-02-08": 1,
"2019-06-04": 1,
"2019-06-25": 1,
"2019-07-26": 1,
"2019-08-15": 2
}
但最終結果應該是這樣的:
avg_day_count: 1.85714285714
即平均天數。
所有天數的總和除以唯一天數。
您可以在沒有任何$group
邏輯的情況下使用單個$project
來實現此目的;
db.collection.aggregate([
{
"$project": {
"result": {
$divide: [
{ $size: "$dates" },
{ $size: { $setUnion: [ "$dates" ] } }
]
}
}
}
])
會放棄;
[
{
"_id": ...,
"result": 1.8571428571428572
}
]
在MongoPlayground上以交互方式檢查代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.