如何获取两个日期之间的数据| NodsJs | MongoDB

编码时间

我正在尝试创建一个 api 来获取 NodeJS 中两个日期之间的数据。我的数据库是 mongoDB,我的数据是这样的

_id:ObjectId("60ff19125474fa0ec45c2d1a")
username:"abc"
Date:"2021-7-26"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"

_id:ObjectId("6101f4a4676d8b2b743a2d58")
username:"abc"
Date:"2021-7-27"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"

_id:ObjectId("6102e1357ad1ed20d4642db0")
username:"abc"
Date:"2021-7-28"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"

_id:ObjectId("6104717cb025c025e8b2d15e")
username:"abc"
Date:"2021-8-01"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"

我想在两个日期之间获取数据,我创建了一个 api 来按日期(单个)获取数据,需要进行一些修改才能在两个日期之间获取它。

这是按日期获取数据的api:


fetchHistorybydate =(req,res)=>{
  
  var HistoryList = []
      User.find({"username":req.body.username, "leave":{ $exists : false} },function(err,data){              
        for(var i =1 ;i<data.length;i++){
          var NDate = data[i].Date;
          if(NDate==req.body.date){
            HistoryList.push(data[i])
          }
        }
        if(err)
        {res.status(300).json("Error")}
          else{
          var token = jwt.sign({
            data: 'foobar'
          }, 'secret', { expiresIn: "30 minute"})
          res.status(200).json({AccessToken: token,data:HistoryList})
    }
  })
}


例如:

假设前端有两个日历,一个是 for Fromdate,第二个是 for Todate,如果用户从Fromdate日历这个2021-7-26和从Todate日历这个选择日期,2021-7-28那么它只会从这些日期获取记录。

根据上述数据,输出应该是

_id:ObjectId("60ff19125474fa0ec45c2d1a")
username:"abc"
Date:"2021-7-26"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"

_id:ObjectId("6101f4a4676d8b2b743a2d58")
username:"abc"
Date:"2021-7-27"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"

_id:ObjectId("6102e1357ad1ed20d4642db0")
username:"abc"
Date:"2021-7-28"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"

请帮助我如何做到这一点。

mubin986

您必须更新数据库的 Date 参数中的 store Date 对象。之后,您将能够按两个日期范围进行查询。目前,您的 Date 参数是一个字符串,但是,您必须将其转换为 Date 对象。

这是转换为Date对象后的解决方案:

fetchHistorybydate = (req, res) => {
    var query = {
        username: req.body.username,
        Date: {
            $gte: new Date(req.body.Fromdate).toISOString(),
            $lte: new Date(req.body.Todate).toISOString()
        },
        leave: { $exists: false }
    }

    User.find(query, function (err, data) {
        if (err) { return res.status(300).json("Error") }
        else {
            return res.status(200).json({ data: data })
        }
    })
}

注意:检索数据后无需再次遍历整个数组。因为我们已经query从我们的数据库中获取了$gte$lte参数。其中$gte的手段greater than or equal$lte方法less than or equal

您还可以使用$gt(大于)和$lt(小于)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB Java输入两个日期字段之间的日期

在两个日期之间查找对象MongoDB

如何从mongodb中的两个日期获取差异之和

mongodb:查询两个日期字段之间的时间段

如何在mongodb中减去两个日期时间

mongodb聚合以在2个日期之间获取数据

如何在mongodb中找到两个日期之间的时差

MongoDB聚合可在按日期字段分组后在两个日期之间添加缺失的月份

Mongodb查询以计算每个文档两个日期之间的天数

如何获取Symfony MongoDB中两个日期之间的差异?

从mongodb-spring的两个ISODate之间获取数据

如何根据快递的日期从mongoDB获取数据?

使用JAVA检查日期是否在MongoDB的列中的两个日期之间

如何获取两个日期之间的日期

如何使用mongodb聚合框架比较两个日期之间的分组数据

如何从MongoDB中按日期按聚合组从数组中获取最后两个值?

如何在mongodb的两个集合之间找到匹配元素?

在mongodb中查找两个日期之间的记录并按月分组

两个日期之间的 Mongodb 和 Codeigniter 记录

查询 mongoDB 中两个日期之间的日期遗漏了一些文档

Mongodb中根据两个日期的差异统计记录

如何使用 lambda 函数在 mongodb 中的两个集合之间进行多个连接?

在Mongodb中填充加入两个集合获取空数据

如何在 MongoDB 中的对象“_id”之间加入两个集合

如何在 $group 内的 mongoDb 聚合中减去两个日期?

两个日期之间的MongoDB聚合字段

如何在MongoDB中获取开始日期和结束日期之间的数据

如何使用 MongoDB 查询在两个特定数据之间找到

如何获取两个日期之间的所有日期?