现象
在私有部署版本4.14.4-cve的FastGPT中,调用/api/core/app/logs/list接口查询日志时,系统抛出MongoDB错误。完整报错信息为$lookup with 'pipeline' may not specify 'localField' or 'foreignField',错误类型为MongoServerError,附带对应的调用堆栈日志。
可能原因
该错误属于MongoDB语法合规性错误。当使用$lookup聚合阶段的pipeline参数时,无法同时指定localField和foreignField参数,这是MongoDB官方定义的语法规则,混用这两类参数会触发该报错。
排查步骤
- 登录FastGPT的私有部署服务器,定位到/api/core/app/logs/list接口对应的代码文件。
- 在代码中搜索$lookup相关的MongoDB查询语句,检查是否同时存在pipeline参数与localField、foreignField参数。
- 对照MongoDB官方语法规范,确认参数使用是否符合要求。
- 如需复现错误,可通过MongoDB客户端执行对应查询语句,验证报错是否重现。
解决与验证
解决方法是调整$lookup的语法格式:若使用pipeline参数,需在pipeline内部定义关联条件,移除外层的localField和foreignField参数。验证步骤如下:1. 修改对应代码文件,修正$lookup的参数使用方式。2. 重启FastGPT服务,使修改生效。3. 调用/api/core/app/logs/list接口查询日志,确认不再出现该报错。4. 检查日志查询功能是否正常返回所需数据。