【发布时间】:2021-02-26 06:29:04
【问题描述】:
您好,我有一个带有员工集合的 mongodb 数据库。集合内的文档如下所示 -
{
"_id": {
"$oid": "5fac29ace10c301364931902"
},
"id": 11,
"first_name": "Kristi",
"last_name": "Dorkins",
"email": "kdorkinsa@livejournal.com",
"gender": "Female",
"startDate": "07/04/2012",
"endDate": "30/03/2019",
"deviceStatus": true
}
我需要“startDate”大于特定日期的员工(我从前端传递到服务器)。 我传递给服务器的日期格式是这样的-
2020-11-14T10:36:21.053Z
由于数据库中的日期是字符串格式(“11/05/2011”),我无法在查询语句中找到将其转换为实际日期对象的方法。
let temp = new Date(req.query.startDate);
dbase.collection("employee").find({new Date(startDate): { $gte: new Date(temp) }})
.toArray()
.then((res) => console.log(res));
在上面的查询中,我尝试创建 key('startDate') 的日期对象,但这似乎是不可能的。
当我尝试以不同的方式进行测试时-
dbase.collection("employee").find({startDate: { $gte: "02/11/2010" }})
.toArray()
.then((result) => {
console.log(result.length);
res.send(result);
});
对于上述查询,我得到的所有文档的 startDate 前两位数大于给定日期的前两位数(在上述情况下大于“2”)。这也不行
我已经浏览过这个线程return query based on date 和其他不同的类似问题,但它们都将日期密钥以 ISO 或不同格式存储在数据库中。 另外,由于我是 MongoDB 新手,我尝试了所有可能的方法。请帮忙
【问题讨论】:
-
您最好将
startDate转换为 date 对象,然后与输入的 date 对象进行比较(即 new Date() )。要将字符串日期转换为日期对象,请使用 $dateFromString 运算符。此运算符需要与$expr运算符一起使用。 -
@prasad_ 我收到此错误 "MongoError: Error parsing date string '23/09/2011'; 0: Unexpected character '2'" 我认为在字符串日期上使用 $datefromstring
标签: javascript mongodb date datetime mongodb-query