我尝试动态创建带有日期的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
查询。
请帮助! :-)
答案 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”条件下(如果在单个日期上查询,则查询将是:大于今天或小于今天->所有)