使用Mongoose查询MongoDB文档返回空数组是什么原因?
问题排查及解决方案
- 问题1:连接地址不匹配
你明确说明数据存储在MongoDB Atlas云数据库中,但当前代码的连接地址是mongodb://alex:qwe@localhost:27017/dyma,指向的是本地运行的MongoDB实例,自然读取不到Atlas上存储的数据。请替换为MongoDB Atlas控制台提供的专属连接串,标准格式为mongodb+srv://<你的用户名>:<你的密码>@<集群标识>.mongodb.net/。 - 问题2:数据库名大小写不匹配
你实际的数据库名为Dyma(首字母大写),但连接串中写的是小写的dyma,MongoDB的库名在类Unix系统下大小写敏感,会被识别为两个不同的数据库,需要将连接串中的库名修改为和实际完全一致的Dyma。 - 问题3:集合名映射不匹配
Mongoose默认会将model()方法第一个参数转换为全小写复数形式作为查询的集合名,你代码里第一个参数传的是chapters,默认会查询名为chapters的集合,但你实际的集合名为Chapter(首字母大写、单数形式),二者完全不匹配,所以查询返回空。
可以在定义模型时传入第三个参数,手动指定要查询的集合名,修改代码如下:
// 第三个参数直接填写你数据库中实际的集合名 const Chapters = mongoose.model("chapters", chapterSchema, "Chapter");
完成以上三处修改后重新运行代码,即可正常查询到集合内的4条文档。
内容的提问来源于stack exchange,提问作者vincent05996
相关产品推荐
相关产品推荐

