Node.js 如何使用Nodejs对从mongoDB获取的数据求和

Node.js 如何使用Nodejs对从mongoDB获取的数据求和,node.js,mongodb,Node.js,Mongodb,我创建了一个应用程序,用于存储组织中员工的出勤情况。属于不同部门的每位员工。挑战是,我试图弄清楚如何使用mongoose查询MongoDB,这样我就可以获得某个部门存在的总数量的7天数据 我尝试使用以下方法,但无法找到将产生所需结果的查询: const d =new Date(); d.setDate(d.getDate()-7); ....//7days record db.user.aggregate(["required query here"])... //r

我创建了一个应用程序,用于存储组织中员工的出勤情况。属于不同部门的每位员工。挑战是,我试图弄清楚如何使用mongoose查询MongoDB,这样我就可以获得某个部门存在的总数量的7天数据

我尝试使用以下方法,但无法找到将产生所需结果的查询:

    const d =new Date(); 
    d.setDate(d.getDate()-7); ....//7days record 
    db.user.aggregate(["required query here"])... //record based on query
我在mongoose和Nodejs方面没有太多经验,只是一些基础知识

这是我的MongoDB数据库/集合中存储的信息


        {      //extracted from my mongoDB database

                "_id": "5d40c2a35a6da12cd8506fac",
                "name": "Jonhny Fredicks",
                "department": "Marketing", //department is first criteria
                "origin": "N/Y",
                "joinDate": "2019-07-30",
                "__v": 0,
                "attendances": {  
 // attendance is second criteria        
                    "2019-07-30": "Present",// total number of "present" is the final goal.This would be done for all employee with the same "department" field.
                    "2019-07-31": "Sick",
                    "2019-08-01": "Present",
                    "2019-08-02": "Present",
                    "2019-08-06": "Present",
                    "2019-08-08": "Vacation",
                    "2019-08-10": "Present",
                    "2019-08-12": "Sick",
                    "2019-08-21": "Present"
                }



我非常感谢您的建议:我的目标是能够获取过去7天内出现的员工记录,并将其发送到前端,在那里我将使用该数字乘以他们输入的小时费率。因此,请计算他们本周的工资。

遵循这一点,希望您能够找到在9天中的最后7天工作的员工

router.get("/api",(req,res,next)=>{
      db.find().then((result)=>{
      var js=[];
      for(var a = 0;a<result.length;a++){
        obj=result[a];
        var counter =0;
        var name= Object.getOwnPropertyNames(obj.attendances);
        for(var i=0;i<name.length;i++){
          if(obj.attendances[name[i]]=="Present"){
            counter +=1;
          }
        }
        if(counter>=7){
          js.push(obj);
          console.log("Okay")
        }else{
          console.log("It's not okay")
        }
       }
       console.log(js);
        res.json({data:js});
       });
     });
router.get(“/api)”,(req,res,next)=>{
db.find().then((结果)=>{
var js=[];

对于(var a=0;a来说,希望您能够找到在9天中的最后7天工作的员工

router.get("/api",(req,res,next)=>{
      db.find().then((result)=>{
      var js=[];
      for(var a = 0;a<result.length;a++){
        obj=result[a];
        var counter =0;
        var name= Object.getOwnPropertyNames(obj.attendances);
        for(var i=0;i<name.length;i++){
          if(obj.attendances[name[i]]=="Present"){
            counter +=1;
          }
        }
        if(counter>=7){
          js.push(obj);
          console.log("Okay")
        }else{
          console.log("It's not okay")
        }
       }
       console.log(js);
        res.json({data:js});
       });
     });
router.get(“/api)”,(req,res,next)=>{
db.find().then((结果)=>{
var js=[];

对于(var a=0;a您的意思是说您的目标是“获取过去7天内出现的员工记录”?@Sumit Vekariya是的,我已经编辑了这个问题,它就是这个意思。Thanks@8SINS:出席人数是数组还是对象本身?您是否需要每个员工在过去7天内出席的天数,是否希望返回对象或进行天数计算?我已经找到了计算每个员工出席人数的方法e过去7天(我分别有每个结果),我想要的是“部门”所有员工在过去7天的“出席”总数:“X”。我想“出席”应该是一个目标。你的意思是说你的目标是“获取过去7天出席的员工记录”?@Sumit Vekariya是的,我已经编辑了这个问题,它就是这个意思。Thanks@8SINS:出席人数是数组还是对象本身?您是否需要每个员工在过去7天内出席的天数,是否希望返回对象或进行天数计算?我已经找到了计算每个员工出席人数的方法e过去7天(我分别有每个结果),我想要的是“部门”所有员工过去7天的“出席”总数:“X”。我想“出席”应该是一个对象