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

Mongoose find函数查询无法返回文档完整字段的问题求助

为什么Mongoose查询结果中没有review、rating和score字段?

原因分析

问题出在你的fruitSchema定义和Mongoose的默认行为上:

  • 你只在fruitSchema里声明了name: String这一个字段,完全没有定义rating、review、score这些你在文档中添加的字段。
  • Mongoose是基于Schema的ODM(对象文档映射),默认开启严格模式(strict: true)。在这个模式下,任何不在Schema中定义的字段,都会被Mongoose自动过滤:保存文档时不会存入数据库,查询时也不会返回这些未定义的字段。
  • 你代码里创建Fruit实例时虽然加了rating、review、score,但因为Schema没这些字段,Mongoose直接忽略了它们,最终数据库里的文档只保留了name字段,所以查询结果里自然看不到这些字段。

解决方案

1. 完善Schema定义(推荐)

修改fruitSchema,把需要存储和查询的字段都补充进去:

const fruitSchema = new mongoose.Schema({
  name: String,
  rating: Number, // 添加rating字段
  review: String, // 添加review字段
  score: Number   // 添加score字段
});

注意:之前已经存入数据库的旧文档,因为存储时Schema没有这些字段,所以这些文档本身不包含rating、review、score数据,修改Schema后查询旧文档时,这些字段会显示为undefined或不出现;新保存的文档会正常存储和返回这些字段。

2. 关闭严格模式(不推荐)

如果确实需要允许Schema外的字段,可以在创建Schema时关闭严格模式,但这会失去Schema的校验和约束能力,不建议在生产环境使用:

const fruitSchema = new mongoose.Schema({
  name: String
}, { strict: false });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:05:40