乐闻世界logo
搜索文章和话题

Mongoose 如何查询返回 json 对象数组而不是文档 documents

4 个月前提问
3 个月前修改
浏览次数28

1个答案

1

在使用Mongoose查询MongoDB数据库时,默认情况下,查询操作返回的是一个包含document实例的数组。每个document都是其对应模型的一个实例,拥有保存到MongoDB的数据和一系列的母方法(如.save().remove())。

如果你想要直接得到纯粹的JSON对象数组,而不是文档实例,你可以使用.lean()方法。.lean()方法会告诉Mongoose跳过实例化全功能的document,直接返回普通的JavaScript对象,这样做的好处是可以提高查询的性能。

下面是一个使用.lean()方法的示例:

javascript
const 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 回复

你的答案