Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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中的最新信息_Javascript_Mongodb_Date - Fatal编程技术网

Javascript 比较三个日期以获取MongoDB中的最新信息

Javascript 比较三个日期以获取MongoDB中的最新信息,javascript,mongodb,date,Javascript,Mongodb,Date,在我的Mongo系列中,我需要比较三个日期,并找到最近的一个。我想知道是否有一种速记或本地MongoDB方法可以做到这一点 在vanilla JS中比较两个日期时,我可以这样做: let compareDates = (date1, date2) => { if (date1>date2) return ("Date1 > Date2"); else if (date1<date2) return ("Date2 > Date1"); else r

在我的Mongo系列中,我需要比较三个日期,并找到最近的一个。我想知道是否有一种速记或本地MongoDB方法可以做到这一点

在vanilla JS中比较两个日期时,我可以这样做:

let compareDates = (date1, date2) => {
   if (date1>date2) return ("Date1 > Date2");
   else if (date1<date2) return ("Date2 > Date1");
   else return ("Date1 = Date2"); 
  }

console.log(compare_dates(new Date('11/14/2018 00:00'), new Date('11/14/2018 00:00')));
console.log(compare_dates(new Date('11/14/2018 00:01'), new Date('11/14/2018 00:00')));
console.log(compare_dates(new Date('11/14/2018 00:00'), new Date('11/14/2018 00:01')));

假设您的模型如下所示:

{
    _id: '123',
    date1: {
      type: Date,
    },
    date2: {
      type: Date,
    },
    date3: {
      type: Date,
    }
}
{
    date1: ISODate("1990-01-01T00:00:00Z"),
    date2: ISODate("1980-01-01T00:00:00Z"),
    date3: ISODate("1970-01-01T00:00:00Z")
}
您只需使用获取最近日期:

db.collection.aggregate([
    {
        $project: {
            recentDate: { $max: [ "$date1", "$date2", "$date3" ] }
        }
    }
])

为了添加一些POJS解决方案,Math.max可以工作,但会返回一个时间值。或者,将它们按数组排序并获取最后一个:

var日期=[
新日期('2018-01-01'),
新日期('2018-01-03'),
新日期('2018-01-02')
];
//返回新日期
log(新日期(数学最大值(…日期));
//返回其中一个日期,对数组进行排序和缩短
log(dates.sort((a,b)=>a-b.pop());
//返回对其中一个日期的引用,排序但不缩短数组
log(dates.sort((a,b)=>a-b.slice(-1)[0]);

您能展示一下您的型号吗?太好了
$max
听起来是这里的完美解决方案。谢谢,米克尔!