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
        }
    ]