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

Node.js连接MongoDB Atlas查询数据字段返回undefined如何解决

问题场景

在Node.js应用中对接MongoDB Atlas,读取sample_mflix库下movies集合数据时,已成功建立数据库连接并拉取到文档,但除_id字段外,访问其余字段(如title)均返回undefined。

相关代码与截图

模型文件 movie.js

const mongoose = require("mongoose");
const { Schema } = mongoose;
require("dotenv").config();

const mongoDB_API = process.env.MONGODB_API_KEY;

const mflixDB = mongoose.createConnection(mongoDB_API).useDb("sample_mflix");

const Movies = mflixDB.model("Movie", new Schema({}), "movies");
module.exports = Movies;

该模型写法参考Mongoose操作已有预创建集合的通用实现方案。

MongoDB Atlas集合数据片段:
MongoDB集合数据片段

业务逻辑文件 app.js

const express = require('express');
const bodyParser = require('body-parser');
const _ =require('lodash');
const mongoose = require('mongoose');

require('dotenv').config();

const app = express();
app.set("view engine","ejs");
app.use(bodyParser.urlencoded({extended:true}));
app.use(express.static('public'));


const Movies = require('./model/mflix/movies');

app.get("/movies",async (req, res) => {
    const ourMovies = await Movies.find().sort({'date': -1}).limit(2);
    console.log("WE recieved: \n")
    console.log(ourMovies);
    const titles =[];
    ourMovies.forEach( x=>{
         console.log(x._id, x.title)
    })
    res.render("movies", { recievedList: ourMovies });
  });

代码运行控制台输出:
控制台运行输出截图

问题原因

问题根源是Schema配置错误。定义模型时传入了空Schemanew Schema({}),Mongoose默认开启严格模式(strict: true),会自动过滤所有未在Schema中显式声明的字段,仅保留默认生成的_id字段,因此访问其他字段时都会返回undefined。

修复方案

二选一即可:

  • 方案1(长期维护推荐):在Schema中显式声明业务需要用到的字段及对应类型,示例修改如下:
// 替换movie.js中原有的模型定义代码
const movieSchema = new Schema({
  title: String,
  year: Number,
  plot: String,
  released: Date,
  // 其余需要使用的字段,按照MongoDB中存储的类型依次声明即可
})
const Movies = mflixDB.model("Movie", movieSchema, "movies");
  • 方案2(快速验证/临时场景适用):给Schema添加strict: false配置,告知Mongoose不要过滤未在Schema中声明的字段,查询返回的所有字段都会正常保留:
// 替换movie.js中原有的模型定义代码
const Movies = mflixDB.model("Movie", new Schema({}, {strict: false}), "movies");

修改完成后重启Node服务,再访问文档的title等字段即可正常获取对应值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:18:18