MongoDB中‘stage value is invalid’错误含义及解决方法
解决MongoDB Compass中$lookup的"stage value is invalid"错误
问题原因分析
你遇到的错误核心是代码的语法或使用场景不符合Compass的要求:
- 第一段代码的JSON格式不规范:所有字符串类型的取值(
power_plants、power_plant_id等)都没加双引号,而JSON语法强制要求字符串必须用双引号包裹,这直接导致stage验证失败。 - 第二段代码是Mongo Shell的完整聚合命令,但Compass的聚合管道编辑器只需要单独的stage对象,不需要
db.greenhouse.aggregate()的包裹结构。
正确的Compass写法
在Compass的聚合管道中,直接添加一个$lookup stage,使用符合JSON规范的代码:
{ "$lookup": { "from": "power_plants", "localField": "power_plant_id", "foreignField": "plant_id", "as": "result" } }
Compass内操作步骤
- 打开目标集合(此处为
greenhouse)的聚合页面; - 点击「添加阶段」,选择
$lookup; - 可以在右侧参数面板填写对应值,也可以直接在编辑器中粘贴上面的JSON代码;
- 点击「运行」即可执行聚合操作。
另外补充:你第二段的代码本身是符合Mongo Shell语法的,如果是在Shell环境中执行,直接复制运行即可,无需修改。
内容的提问来源于stack exchange,提问作者Daibata Roy
相关产品推荐
相关产品推荐

