获取5天以来的所有日志



我的数据库中的日志就像{..., "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

最新更新