【发布时间】:2022-02-08 04:42:34
【问题描述】:
我的数据库中有 4 条记录。
{"_id":{"$oid":"6200b15e91f762376cd43ac3"},"startDate":{"$date":"2021-01-01T00:00:00.000Z"},"endDate":{"$date":"2021-01-28T18:29:59.059Z"},"__v":0}
{"_id":{"$oid":"6200b15e91f762376cd43ac4"},"startDate":{"$date":"2021-01-01T00:00:00.000Z"},"endDate":{"$date":"2021-01-23T18:29:59.059Z"},"__v":0}
{"_id":{"$oid":"6200b15e91f762376cd43ac5"},"startDate":{"$date":"2021-01-05T00:00:00.000Z"},"endDate":{"$date":"2021-01-28T18:29:59.059Z"},"__v":0}
{"_id":{"$oid":"6200b15e91f762376cd43ac6"},"startDate":{"$date":"2021-01-05T00:00:00.000Z"},"endDate":{"$date":"2021-01-25T18:29:59.059Z"},"__v":0}
我的用户界面如下所示:
我的mongodb查询如下:(我试过的)
data.find({
"$or": [
{"startDate": {"$gte": startDate}},
{"endDate": {"$lte": endDate}}
]
});
当使用上面的查询进行搜索时,我只得到 1 条记录,即:{"_id":{"$oid":"6200b15e91f762376cd43ac3"},"startDate":{"$date":"2021-01-01T00:00:00.000Z"},"endDate":{"$date":"2021-01-28T18:29:59.059Z"},"__v":0} 而不是全部 4 条。
从 UI 发送时,我将其转换为:
req.query:
dateStart: '2021-01-01',
dateEnd: '2021-01-28',
然后转成new Date()格式:
let startDate = new Date(req.query.dateStart);
let endDate = new Date(req.query.dateEnd);
我不知道我在查询中出了什么问题。需要帮忙!谢谢!
【问题讨论】:
-
不应该是和声明,因为它必须满足 gte startdate '和' lte enddate
-
尝试将日期转换为 ISO 格式。这应该会有所帮助。
-
同样,当您创建新的“2021-01-28”日期时,它会给出
"2021-01-28T00:00:00.000Z",因此您不会得到第一个和第三个结果 -
@cmgchess 不应该是什么?我没有得到你
-
@Gobind Deep Singh 我尝试将其转换为 ISO 格式。那是行不通的。这会改变数据库中内容的格式以及我发送到后端查询的内容吗?
标签: javascript node.js mongodb mongodb-query aggregation-framework