如何在Mongoose中从Schema获取指定字段值,例如获取BookInstanceSchema的status字段
Mongoose从自定义Schema中获取status字段值的方法
前置准备
你需要先基于已定义的BookInstanceSchema注册对应Model,示例如下:
const mongoose = require('mongoose'); // 你自定义的BookInstanceSchema结构,其中已定义status字段 const BookInstanceSchema = new mongoose.Schema({ // 其他字段省略 status: { type: String, required: true, enum: ['Available', 'Loaned', 'Reserved', 'Maintenance'], default: 'Maintenance' } }); // 注册Model const BookInstance = mongoose.model('BookInstance', BookInstanceSchema);
常用获取方式
- 单条文档查询后读取status
// 按文档ID查询对应记录 const targetBook = await BookInstance.findById('你的文档ID值'); // 直接读取status属性 const status = targetBook.status;
- 仅查询status字段(优化查询性能)
如果你不需要其他字段的内容,可以指定仅返回status字段,减少数据传输量:
// 第二个参数指定返回字段,-_id表示不返回默认的_id字段 const targetStatusInfo = await BookInstance.findById('你的文档ID值', 'status -_id'); const status = targetStatusInfo.status;
- 批量获取所有文档的status字段
const allStatus = await BookInstance.find({}, 'status'); // 返回所有文档的_id和status组成的数组
Schema方法内获取status
如果是在Schema的自定义实例方法中读取当前实例的status,直接调用this.status即可:
BookInstanceSchema.methods.fetchStatus = function() { return this.status; } // 调用示例 const targetBook = await BookInstance.findById('你的文档ID值'); const status = targetBook.fetchStatus();
注意:所有Mongoose异步查询操作需要放在async函数中执行,或者通过
.then()链式调用处理返回结果。
内容的提问来源于stack exchange,提问作者Danko
相关产品推荐
相关产品推荐

