Mongoose执行aggregate时报collection.aggregate最多接受2个参数错误如何解决
报错修复方案
触发原因
你遇到的MongoInvalidArgumentError: Method "collection.aggregate()" accepts at most two arguments报错,结合给出的代码,是Mongoose版本特性或导入逻辑错误导致的参数传递异常。
对应解决方法
- 情况1:使用的Mongoose版本为5.x及更早版本
低版本Mongoose的aggregate()返回的不是Promise对象,不能直接await,需要链式调用.exec()触发实际查询,修改查询代码为:const data = await Rooms.aggregate([{ $match: { adminID: "1234" } }]).exec(); - 情况2:Model导入逻辑错误
你定义Schema时使用了Rooms作为变量名,导出Model时也用了同名标识,如果在导入时错误使用了解构语法,会实际拿到Schema对象而非Model,调用Schema上的aggregate方法会触发参数异常,修正导入语句为:const Rooms = require('./你的Schema文件路径'); // 不要用解构导入
验证步骤
修改完成后可添加调试输出确认查询正常:
const data = await Rooms.aggregate([{ $match: { adminID: "1234" } }]).exec(); console.log(data);
内容的提问来源于stack exchange,提问作者Kyaw Zin Thiha
相关产品推荐
相关产品推荐

