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

如何在MongoDB查询中传入条件值实现动态筛选逻辑?

解决方案

你可以通过动态构造查询条件的方式实现需求,不用把所有条件写死在查询语句里。
另外额外提醒:HTTP GET 规范不建议携带请求体,你可以将接口改为 POST 请求,或者把参数放到 query 中传递,避免部分环境下参数取不到的问题。

修正后的代码:

// 建议改成POST请求,适配body传参
router.post("/hotelList", (req, res) => {
  const { date, boys, girls, isNightParty } = req.body;
  // 先初始化基础查询条件
  const query = {
    isBlockedOn: { $ne: date }
  };
  // 仅当isNightParty为true时添加夜场允许的过滤条件
  if (isNightParty === true) {
    query.isNightPartyAllowed = true;
  }
  // 执行查询
  businessUser.find(query)
    .then((toListHotels) => {
      return res.status(200).json(toListHotels);
    })
    .catch((err) => {
      console.log(err);
      res.status(500).json({ error: '查询失败' }); // 补充错误返回,避免前端超时
    });
});

逻辑说明:

  • 初始的query对象只包含所有请求都需要校验的isBlockedOn条件,不管isNightParty传什么都生效。
  • 只有当入参isNightParty严格等于true的时候,才会往查询条件里追加isNightPartyAllowed: true的校验,不满足该条件时就不会校验这个字段,符合你的需求。

内容的提问来源于stack exchange,提问作者Sarfaraz Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:05