You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose findOneAndUpdate多字段过滤时$lt运算符失效问题

问题原因及解决方案

问题出在你直接把包含MongoDB操作符的查询条件塞进了req.params里——req.params是Express专门用来存储URL路径参数的对象,它的属性值默认是字符串类型,当你把带$lt的对象赋值给它时,很可能被Express的参数解析逻辑干扰,导致Mongoose无法正确识别日期过滤条件。

修改后的代码

const get_capture_for_processing = async function (req, res) {
  // 单独构建查询对象,避免req.params的干扰
  const query = {
    active: true,
    inprogress: false,
    date: {$lt: new Date(new Date().setUTCHours(0, 0, 0, 0))}
  };
  console.log(query);
  const result = await Capture.findOneAndUpdate(query, {'inprogress':true}).sort({"elapsed": -1});
  res.json(result);
}

额外验证点

  1. 打印query时确认date字段是{ $lt: 当日零点UTC时间 }的正确格式,没有被转成字符串或其他异常结构;
  2. 检查Capture模型中date字段的类型是否定义为Date,类型不匹配也会导致日期比较失效。

内容的提问来源于stack exchange,提问作者Edward Porter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:10