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

MongoDB聚合$match多条件查询报错:意外令牌/未知阶段名称

修复MongoDB聚合查询的「意外阶段名称」/「意外令牌」错误

错误原因分析

你的聚合查询代码存在两个关键问题:

  • $match阶段的条件结构错误:你把year的查询条件写成了和genre条件同级的独立对象,导致MongoDB误将{year:...}识别为一个新的聚合阶段,从而抛出「unrecognized pipeline stage name: year」错误。
  • $gt条件的语法错误:year:{$gt:["$year",2005]}是错误写法,$gt操作符只需传入目标比较值(这里是2005),不需要数组格式,也不需要引用$year字段(直接比较数值即可)。

正确的聚合查询代码

db.movies.aggregate([
  {
    $match: {
      genre: { $all: ['Comedy', 'Drama'] },
      year: { $gt: 2005 }
    }
  }
])

代码说明

  • $match阶段内的所有查询条件都要放在同一个对象中,genre和year是该对象下的两个键,这样MongoDB才会正确解析为单一的匹配条件。
  • year: { $gt: 2005 }直接筛选出上映年份大于2005的电影,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:41:15