在使用Mongoose查询MongoDB数据库时,默认情况下,查询操作返回的是一个包含document实例的数组。每个document都是其对应模型的一个实例,拥有保存到MongoDB的数据和一系列的母方法(如.save()
和.remove()
)。
如果你想要直接得到纯粹的JSON对象数组,而不是文档实例,你可以使用.lean()
方法。.lean()
方法会告诉Mongoose跳过实例化全功能的document,直接返回普通的JavaScript对象,这样做的好处是可以提高查询的性能。
下面是一个使用.lean()
方法的示例:
javascriptconst mongoose = require('mongoose'); const { Schema } = mongoose; // 定义一个Mongoose模型 const userSchema = new Schema({ name: String, age: Number, email: String }); const User = mongoose.model('User', userSchema); // 连接到MongoDB数据库 mongoose.connect('mongodb://localhost:27017/mydatabase'); // 使用 .find() 查询并使用 .lean() 返回纯粹的JSON对象数组 User.find({}).lean().exec((err, users) => { if (err) { throw err; } // `users` 将是一个包含纯粹的JSON对象的数组 console.log(users); });
在以上代码中,通过在.find()
方法链中添加.lean()
,返回的users
变量将是一个包含多个用户数据的纯粹的JSON对象数组,而不是包含多个Mongoose文档实例的数组。使用.lean()
可以提高查询效率,尤其是在只需要读取数据而不需要进行数据操作的情况下。
2024年6月29日 12:07 回复