【发布时间】:2020-09-27 06:41:13
【问题描述】:
试图在两天之间从 mongodb 获取记录,但在我的代码中只有两天之间。
例子:
01-06-2020 到 08-06-2020 = 获取从 02-06-2020 到 08-06-2020 的记录(缺少 01-06-2020)
但我想要 01-06-2020 到 08-06-2020 = 需要获取从 01-06-2020 到 08-06-2020 的记录。
如何获得?
MongoDB数据:
{
_id:ObjectId("5edd1df67b272e2d4cf36f70"),
pname:"Test 1",
category:"Choco 1",
todaydate:2020-06-01T18:30:00.000+00:00
},
{
_id:ObjectId("5gdd1df67b272e2d4cf36f72"),
pname:"Test 2",
category:"Choco 3",
todaydate: 2020-06-02T18:30:00.000+00:00
},
{
_id:ObjectId("5kdd1df67b272e2d4cf36f74"),
pname:"Test 5",
category:"Choco 6",
todaydate: 2020-05-01T18:30:00.000+00:00
},
{
_id:ObjectId("5ewd1df67b272e2d4cf36f75"),
pname:"Test 6",
category:"Choco 8",
todaydate: 2020-06-03T18:30:00.000+00:00
},
{
_id:ObjectId("5sdd1df67b272e2d4cf36f76"),
pname:"Test 3",
category:"Choco 9",
todaydate: 2020-06-04T18:30:00.000+00:00
},
{
_id:ObjectId("5tdd1df67b272e2d4cf36f78"),
pname:"Test 11",
category:"Choco 10",
todaydate: 2020-06-05T18:30:00.000+00:00
}
data.model.js:
const mongoose = require('mongoose');
var userSchemaDate = new mongoose.Schema({
pname: {
type: String
},
category: {
type: String
},
todaydate: {
type: Date
}
}, {
versionKey: false,
collection: 'data'
});
module.exports = mongoose.model('Data', userSchemaDate);
data.controller.js:
module.exports.getReportTableData = (req, res, next) => {
var collection = req.query.collection;
let tableReportdata = dbc.model(collection);
let date1 = "01-06-2020"; dd/mm/yyyy
let date2 = "07-06-2020"; dd/mm/yyyy
tableReportdata.find({
$and: [{
todaydate: {
$gt: date1
}
},
{
todaydate: {
$lt: date2
}
}
]
}, function(err, docs) {
if (err) {
console.log(err);
return;
} else {
console.log("Successful loaded report data");
res.json({ data: docs, msg: 'Report data loaded.' });
}
});
}
【问题讨论】:
-
你查看query operators的官方文档了吗?
-
@thammada:那我可以用 $gte, $lte 吗??
-
没错,最好的方法就是尝试一下:)
-
$gte, $lte 不工作
-
您可能将字符串值与日期值进行比较,您必须先将它们转换为相同的类型。但是,为了比较日期字符串,您应该将它们格式化为
'%Y-%m-%d'(年/月/日,而不是日/月/年),因为它应该根据实际日期按字母顺序排序。请包含您的架构,然后我们可以看到todaydate是如何存储的
标签: node.js mongodb mongoose mongodb-query