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

MongoDB查询构建:筛选符合时间与时区条件的优惠码

MongoDB优惠码查询构建方案

查询逻辑拆解

要满足需求,查询需覆盖两种优惠码类型:

  • 不可过期优惠码(isExpirable: false):直接筛选返回
  • 可过期优惠码(isExpirable: true):需同时满足三个条件:
    1. availability数组中存在匹配指定时区的元素
    2. 传入的时间戳大于等于该元素的startTimestamp
    3. 传入的时间戳小于等于该元素的endTimestamp

具体查询语句

假设传入参数为:

  • 时间戳:1628290101
  • 时区:'America/New_York'

对应的MongoDB查询代码如下:

db.promoCodes.find(
  {
    $or: [
      // 匹配不可过期优惠码
      { isExpirable: false },
      // 匹配符合时间条件的可过期优惠码
      {
        isExpirable: true,
        availability: {
          $elemMatch: {
            timezone: 'America/New_York',
            startTimestamp: { $lte: 1628290101 },
            endTimestamp: { $gte: 1628290101 }
          }
        }
      }
    ]
  },
  // 指定返回字段,排除默认的_id
  { promoCode: 1, country: 1, _id: 0 }
)

代码说明

  1. $or操作符:将两种优惠码的筛选条件组合起来,满足任一条件即可匹配
  2. $elemMatch操作符:确保availability数组中存在同时满足时区匹配、时间戳在有效期范围内的元素
  3. 投影参数:仅返回promoCode和country字段,去掉不需要的字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:20:34