我的数据库中的日志就像{..., "date" : ISODate("2021-09-09T23:05:00.738Z"), ...}
我有以下代码来获取9月2日以来的日志:
db.getCollection('logs')
.find({
"date":{"$gt":ISODate("2021-09-02")}
})
.sort({date:-1})
有谁知道如何获得5天以来的所有日志吗?我尝试查询Date.now()
,但没有找到解决方案。
你能试一下这个条件吗:
- 要在查询中使用日期,需要将字符串包装在ISODate 中日期需要是Y-M-D格式,我猜你可能想要还包括4月最后一天的数据。在这种情况下,你应该将结束日期提前一天。
{date:{$gte:ISODate("2021-09-05"),$lt:ISODate("2020-09-10"}}
不同的方式:
5_DAYS = 4.32e+8;
find({date : {$gt: new Date(ISODate().getTime() - 5_DAYS) } } )
Us the moment.js库:
db.getCollection('logs').find({date: {$gt: moment().startOf('day').subtract(5, 'days').toDate()} } )
使用$$NOW
和$dateAdd
db.collection.find({
"$expr": {
"$and": [
{
"$gt": [ "$date", { $dateAdd: { startDate: "$$NOW", unit: "day", amount: -5 } } ]
},
{
"$lte": [ "$date", "$$NOW" ]
}
]
}
})
mongoplayground