Javascript 如何在mongoose node js中查找每周每一天的数据
质疑 我得到的结果Javascript 如何在mongoose node js中查找每周每一天的数据,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,质疑 我得到的结果 const weekGraph = await tmUserSubscriptions.aggregate([ { $match:{$and:[{subscriptionId: mongoose.Types.ObjectId(subscriptionId)}, {createdAt:{$gte:moment().startOf('isoweek').toDate(),
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
}
]
所以这里我想逐日获取当前周的所有数据,在我当前的查询中,如果没有任何一周的数据,那么它将不会返回该天,但根据我的预期结果,我需要所有一周的数据,如果没有任何一周的数据,那么它将返回0,所以我需要所有7天的数据,
此处_id表示一周中的某一天Mongoose/MongoDB仅在密钥存在时返回聚合。否则,它将不会返回数据(通过连接传输的数据越少,传输速度越快)。因此,如果聚合没有数据,则需要提供自己的默认值
var results=[{{u id:1,count:1}]//根据您的响应假设
var hasResult=[]
for(结果的var结果){
hasResult.push(结果。\u id)
}
for(var i=1;i Mongoose/MongoDB将提供数据。如果没有数据,则不会产生结果。您需要迭代响应以提供默认值。@StevenLu您能给我一个示例以便更好地理解吗
"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
}
]