以纯文本格式 YYYY-MM-DD 存储时查询 MongoDB 中的日期
Query a date in MongoDB when it's stored as plain-text and format YYYY-MM-DD
我正在构建一个 "filtering" 系统,我需要查询集合中出生日期介于 2 个日期之间的用户。
我现在的代码如下:
if (req.query.ageMin) {
var dobMin = new Date(dateNow.setFullYear(dateNow.getFullYear() - req.query.ageMin));
}
if (req.query.ageMax) {
var dobMax = dateNow.setFullYear(dateNow.getFullYear() - req.query.ageMax);
}
if (dobMin && dobMax) {
query.dob = {
$gte: dobMin,
$lt: dobMax
}
} else if (dobMin) {
query.dob = {
$gte: dobMin
}
} else if (dobMax) {
query.dob = {
$lt: dobMax
}
}
db.users.find(query).toArray(function (err, users) {
console.log(users);
});
返回一个空数组(没有错误)。
我假设这是因为集合中的日期不是日期对象——它们只是字符串,例如“1980-06-15”。
有没有我可以传递给查询的选项,以便 Mongo 在查询时使存储的日期成为日期对象?或者任何解决方案...
尝试将日期实例转换为字符串:
dobMin = dobMin.toISOString().substring(0, 10)
dobMax = dobMax.toISOString().substring(0, 10)
我正在构建一个 "filtering" 系统,我需要查询集合中出生日期介于 2 个日期之间的用户。
我现在的代码如下:
if (req.query.ageMin) {
var dobMin = new Date(dateNow.setFullYear(dateNow.getFullYear() - req.query.ageMin));
}
if (req.query.ageMax) {
var dobMax = dateNow.setFullYear(dateNow.getFullYear() - req.query.ageMax);
}
if (dobMin && dobMax) {
query.dob = {
$gte: dobMin,
$lt: dobMax
}
} else if (dobMin) {
query.dob = {
$gte: dobMin
}
} else if (dobMax) {
query.dob = {
$lt: dobMax
}
}
db.users.find(query).toArray(function (err, users) {
console.log(users);
});
返回一个空数组(没有错误)。 我假设这是因为集合中的日期不是日期对象——它们只是字符串,例如“1980-06-15”。 有没有我可以传递给查询的选项,以便 Mongo 在查询时使存储的日期成为日期对象?或者任何解决方案...
尝试将日期实例转换为字符串:
dobMin = dobMin.toISOString().substring(0, 10)
dobMax = dobMax.toISOString().substring(0, 10)