mongodb查询前一天的语句怎么写?在kettle里写

mongodb 查询前一天的语句怎么写?在kettle里写

SQL 张宇 发布于 5 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
用户k6280494Lv6资深互助
发布于5 天前

在 MongoDB 中查询前一天的文档,可以使用日期操作符和日期函数来指定查询条件。假设你的集合中有一个日期字段,例如 createdAt,你可以使用 $lt 和 $gte 操作符来指定前一天的日期范围。

以下是一个示例,展示了如何查询前一天的文档:

javascript复制代码

// 获取当前日期和时间
const currentDate = new Date();
// 获取前一天的日期和时间
const startOfDayYesterday = new Date();
startOfDayYesterday.setDate(currentDate.getDate() - 1);
startOfDayYesterday.setHours(0, 0, 0, 0);
const endOfDayYesterday = new Date(startOfDayYesterday);
endOfDayYesterday.setHours(23, 59, 59, 999);
// 执行查询
db.yourCollection.find({
createdAt: {
$gte: startOfDayYesterday,
$lt: endOfDayYesterday
}
});

在这个示例中:

  1. currentDate 获取当前日期和时间。

  2. startOfDayYesterday 设置日期为前一天,并将时间设置为当天的开始时间(00:00:00)。

  3. endOfDayYesterday 设置日期为前一天,并将时间设置为当天的结束时间(23:59:59.999)。

  4. 使用 db.yourCollection.find() 方法查询 createdAt 字段在前一天范围内的文档。

如果你使用的是 MongoDB 的聚合框架,可以类似地构建日期范围:

javascript复制代码

db.yourCollection.aggregate([
{
$match: {
createdAt: {
$gte: new Date(new Date().setDate(new Date().getDate() - 1)).setHours(0, 0, 0, 0),
$lt: new Date(new Date().setDate(new Date().getDate() - 1) + 1 * 24 * 60 * 60 * 1000 - 1).setHours(23, 59, 59, 999)
}
}
}
]);

注意,这里的日期设置逻辑与前一个示例相同,但在聚合框架中直接在 $match 阶段中使用。

请根据你的实际情况替换 yourCollection 和 createdAt 字段名。

  • 张宇 张宇(提问者) {$and:[{hourAreaType:"区域"},{time:{$gte: new Date(new Date().setDate(new Date().getDate() - 1)).setHours(0, 0, 0, 0),$lt: new Date(new Date().setDate(new Date().getDate() - 1) + 1 * 24 * 60 * 60 * 1000 - 1).setHours(23, 59, 59, 999) }},{$or:[{userName:"张三"},{userName:"李四"}}]}]} 这样为啥不对呢?在kettle里 表输入的语句里 写的
    2025-01-07 10:51 
最佳回答
0
华莉星宸Lv7资深互助
发布于5 天前
试试这个 SELECT * FROM your_collection  WHERE date_field = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)

  • 3关注人数
  • 33浏览人数
  • 最后回答于:5 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部