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

MongoDB聚合查询在Robo3T正常运行 代码执行返回空数组如何解决

排查点1:日期参数类型不匹配

你代码里把monthData转成了ISO字符串,而MongoDB中updatedAt存储的是Date类型,字符串和日期类型比较不会匹配到结果,Robo3T里用的是ISODate()类型对象所以可以正常查询。
你需要去掉.toISOString()调用,直接传入Date对象即可:

// 错误写法
monthData= await new Date(monthData.getFullYear(), monthData.getMonth(), 2).toISOString();
// 修正写法
monthData = new Date(monthData.getFullYear(), monthData.getMonth(), 2);

排查点2:lookup返回值是数组,匹配规则验证

$lookup的as字段返回的始终是数组,你后续直接用"result.company"做匹配虽然MongoDB支持隐式匹配数组内元素,但是如果是一对一关联的场景,建议在lookup之后加一步$unwind拆解数组,避免后续分组时取到数组值而非单个值:

{ "$lookup": {
    "from": "results",
    "localField": "result",
    "foreignField": "_id",
    "as": "result"
}},
// 新增这行
{ "$unwind": "$result" },
{ "$match": { "result.company": new mongoose.Types.ObjectId(companyId)}},

排查点3:入参校验

打印你代码里的companyId值,确认和Robo3T中使用的ObjectId("6114dc9193a52d3278aa486f")完全一致,排除传参错误、空值的情况。

排查点4:开启Mongoose调试确认实际执行语句

在代码初始化位置加一行mongoose.set('debug', true),运行后会打印实际发送到MongoDB的查询语句,和Robo3T中的语句逐字段对比,就能快速找到差异点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:03