Mongo查询带有日期的json对象

时间:2019-02-22 15:22:12

标签: javascript mongodb

我尝试动态创建带有日期的mongo查询。

这是我产生的JSON查询的一部分:

{"$or":[{"createdAt":{"$gte":"2017-08-31T22:00:00.000Z"}},{"modifiedAt":{"$gte":"2017-08-31T22:00:00.000Z"}}]}

但不起作用。

这是背后代码的一部分:

let result = {$or: [{createdAt: {$lte: new Date(date)}}, {modifiedAt: {$lte: new Date(date)}}]};

花了3个小时试图找到解决方案。我的理解是,$lte在此处尝试将mongo日期对象与以ISO格式描述日期的字符串进行比较。而且效果不佳。

我不知道如何创建一个正确的JSON对象,它是一个包含日期的mongo查询。

请帮助! :-)

1 个答案:

答案 0 :(得分:1)

如果要使用日期范围查询Mongo,则必须使用标准的日期格式(ISO-8601)。为此,请尝试一下:

        let date ="2019-02-22"; //for example, in my apis, you can set multiple type of date (YYYY-MM-DD, YYYYMMDD, DD-MM-YYYY,..) but date format with / is forbidden.
        let query = {$or:[{createdAt: {$lte: moment(date).format()}}, {modifiedAt:{$gte: moment(date).format()}}] //pass parameter to format, in this case it will use the default locale format

像这样,您正在设置查询。 IMO在“ OR”条件下查询日期范围没有用:通常日期查询在“ AND”条件下(如果在单个日期上查询,则查询将是:大于今天或小于今天->所有)