![](/img/trans.png)
[英]How to obtain data from mongoose collection according to week month or years? P.S every document is stored or updated as a single document for a day
[英]How to find data in for every day of week in mongoose node js
詢問
const weekGraph = await tmUserSubscriptions.aggregate([
{
$match:{$and:[{subscriptionId: mongoose.Types.ObjectId(subscriptionId)},
{createdAt:{$gte:moment().startOf('isoweek').toDate(),
$lt:moment().endOf('isoweek').toDate()}}
]}
},
{"$project":{
"_id:":1,
"createdAt":{"$dayOfWeek":"$createdAt"},
"subscriptionId":1,
}},
{"$group":{
"_id":"$createdAt",
"count":{$sum:1},
}}
])
結果我得到
"data": [
{
"_id": 7,
"count": 1
},
{
"_id": 5,
"count": 2
},
{
"_id": 6,
"count": 1
}
]
預期結果
"data": [
{
"_id": 7,
"count": 1
},
{
"_id": 6,
"count": 2
},
{
"_id": 5,
"count": 1
},
{
"_id": 4,
"count": 0
},{
"_id": 3,
"count": 0
},{
"_id": 2,
"count": 0
}{
"_id": 1,
"count": 0
}
]
所以在這里我想每天獲得當前一周的所有數據,在我當前的查詢中,如果工作日沒有任何數據,那么它將不會返回那一天,但根據我的預期結果,我想要一周中的所有數據,如果工作日的任何一天都沒有數據,那么它將返回 0,所以我想要所有 7 天的數據,這里 _id 代表星期幾
如果鍵存在,Mongoose/MongoDB 只會返回聚合。 否則,它不會返回數據(通過連接傳輸的數據越少總是越快)。 因此,如果聚合沒有適合您的數據,您將需要提供自己的默認值。
var results = [{ _id: 1, count: 1 }] // assumed from your response
var hasResult = []
for (var result of results) {
hasResult.push(result._id)
}
for (var i = 1; i <= 7; i++) {
if (!hasResult.includes(i)) {
results.push({ _id: i, count: 0 })
}
}
console.log(results)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.