要在 MongoDB 中查询 meta
字段下的 timestampOccur
子字段符合指定日期范围的记录,你可以使用以下几种方法:
db.collection.find({
"meta.timestampOccur": {
$gte: ISODate("2023-01-01T00:00:00Z"),
$lte: ISODate("2023-01-31T23:59:59Z")
}
})
db.collection.find({
"meta.timestampOccur": {
$gt: ISODate("2023-01-01T00:00:00Z"),
$lt: ISODate("2023-02-01T00:00:00Z")
}
})
db.collection.aggregate([
{
$match: {
"meta.timestampOccur": {
$gte: ISODate("2023-01-01T00:00:00Z"),
$lte: ISODate("2023-01-31T23:59:59Z")
}
}
}
])
日期格式:确保使用正确的 ISO 日期格式,或者使用 JavaScript Date 对象:
new Date("2023-01-01")
时区处理:MongoDB 存储的是 UTC 时间,查询时需要考虑时区差异
索引优化:如果经常按此字段查询,建议创建索引:
db.collection.createIndex({"meta.timestampOccur": 1})
性能考虑:对于大型集合,日期范围查询配合索引效率最高
毫秒精度:MongoDB 日期时间精确到毫秒,范围查询时要注意边界值
const startOfDay = new Date();
startOfDay.setHours(0, 0, 0, 0);
const endOfDay = new Date();
endOfDay.setHours(23, 59, 59, 999);
db.collection.find({
"meta.timestampOccur": {
$gte: startOfDay,
$lte: endOfDay
}
})
希望这些方法能帮助你查询 MongoDB 中符合日期范围的记录!