以下是文档结构:
{
_id : '993920022',
data: 'dkow000afkkaso',
timeStamp : '3/7/2018 10:13:36 AM'
}
我想查找特定日期范围内的数据,例如2018年3月1日到2018年3月1日,但我无法实现它,我的MongoDB查询是:
db.collection.find(
{ 'timeStamp' :
{
$lte : Date('3/7/2018'),
$gte : Date('3/1/2018')
}
})
答案 0 :(得分:1)
如果你的timeStamp字段不是Date对象而只是一个字符串,我怀疑你可以用$ lte和$ gte过滤它而没有转换。 可能一种工作方法可能是使用聚合框架和投影的第一阶段,您可以转换ISODate中的字符串和匹配的第二阶段在哪里进行过滤。
这样的事情:
db.collection.aggregate([
{ $project: { data: "$data", timeStamp: ISODate("$timeStamp") } },
{ $match: { "timeStamp": { $lte: ISODate('3/7/2018'), $gte: ISODate('3/1/2018') }}}
]);
答案 1 :(得分:0)
尝试此查询:
let firstDate = new Date(pass value);
let lastDate = new Date(pass value);
db.collections.aggregate([
{
"$match":
{
"insertDate":
{
"$lte": lastDate,
"$gte": firstDate
}
}
}
])
.exec()
.then((result) => {
//result
})
.catch((err) => {
// error
});