Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongodb-查找日期字段是否在最近10分钟内或获取日期差_Javascript_Mongodb - Fatal编程技术网

Javascript Mongodb-查找日期字段是否在最近10分钟内或获取日期差

Javascript Mongodb-查找日期字段是否在最近10分钟内或获取日期差,javascript,mongodb,Javascript,Mongodb,我正在react应用程序中使用mongodb和以下查询 let editedTime = await req.db.collection('commentsPosts').findOne( { "_id": req.query.whenEditedId } ) res.json({editedTime}); 给我下面的结果 {"editedTime":{"_id":"abcd&qu

我正在react应用程序中使用mongodb和以下查询

  let editedTime =  await req.db.collection('commentsPosts').findOne( 
    {
      "_id": req.query.whenEditedId
    }
  )
  res.json({editedTime});
给我下面的结果

{"editedTime":{"_id":"abcd","text":"this was edited","editedAt":"2020-08-09T23:37:31.279Z"}}

如何查找editedAt是否在最近10分钟内,或者是否存在获得日期差的内容?

您可以从editedAt属性创建一个日期对象,并用实际日期减去,您将获得毫秒差,然后使用下面的函数将其转换为分钟

let response={editedTime:{{u id:abcd,text:this was edited,editedAt:2020-08-09T23:37:31.279Z} 设editedAt=new Dateresponse.editedTime.editedAt; 让actualDate=新日期; 让差异=实际日期-编辑日期; 控制台。对数差; 函数毫秒毫秒{ var分钟数=Math.floormillis/60000; 返回分钟数; }
console.logmillisToMinutesdifference+“分钟” 您可以从editedAt属性创建一个日期对象,并用实际日期减去,您将得到毫秒差,然后可以使用下面的函数将其转换为分钟

let response={editedTime:{{u id:abcd,text:this was edited,editedAt:2020-08-09T23:37:31.279Z} 设editedAt=new Dateresponse.editedTime.editedAt; 让actualDate=新日期; 让差异=实际日期-编辑日期; 控制台。对数差; 函数毫秒毫秒{ var分钟数=Math.floormillis/60000; 返回分钟数; }
console.logmillisToMinutesdifference+“分钟” 要查找最后10分钟内的日期

db.collection.find({
 editedAt : { 
       $gte: new Date().getTime() - 60000);


要查找最后10分钟内的日期

db.collection.find({
 editedAt : { 
       $gte: new Date().getTime() - 60000);


看起来您正在使用JavaScript日期对象作为时间戳。这很好,但重要的是要将其与数字时间戳区分开来。因为有些人可能会使用数字时间戳,为了完整性,我将包括这个答案

注意:区别基本上只是将数字时间戳包装在新日期中的问题。。。如果必要的话

还要注意:将毫秒转换为10分钟很容易出错,因此数学留给JavaScript引擎。你可以很快地把它转换成600000,如果你愿意的话,可以使用它,但是我喜欢弄清楚发生了什么

检索日期在10分钟后的记录 使用JavaScript日期 使用数字时间戳 计算时差 使用JavaScript日期 注意:我没有对此进行测试,但是如果您正在使用Date对象,mongo库应该返回Date对象,因此您可以使用诸如getTime之类的日期函数将其转换为毫秒。如果希望timeSince的单位不同于毫秒,则需要转换数字

res.json({timeSince: Date.now() - editedTime.editedAt.getTime()})
使用数字时间戳
看起来您正在使用JavaScript日期对象作为时间戳。这很好,但重要的是要将其与数字时间戳区分开来。因为有些人可能会使用数字时间戳,为了完整性,我将包括这个答案

注意:区别基本上只是将数字时间戳包装在新日期中的问题。。。如果必要的话

还要注意:将毫秒转换为10分钟很容易出错,因此数学留给JavaScript引擎。你可以很快地把它转换成600000,如果你愿意的话,可以使用它,但是我喜欢弄清楚发生了什么

检索日期在10分钟后的记录 使用JavaScript日期 使用数字时间戳 计算时差 使用JavaScript日期 注意:我没有对此进行测试,但是如果您正在使用Date对象,mongo库应该返回Date对象,因此您可以使用诸如getTime之类的日期函数将其转换为毫秒。如果希望timeSince的单位不同于毫秒,则需要转换数字

res.json({timeSince: Date.now() - editedTime.editedAt.getTime()})
使用数字时间戳
这应该是可行的,但这是一个javascript解决方案。mongodb解决方案可能会有所帮助。你的答案值得投票。这应该是可行的,但这是一个javascript解决方案。mongodb解决方案可能会有所帮助。不过,你的答案值得投票。
res.json({timeSince: Date.now() - editedTime.editedAt})