使用Mongoose实现MongoDB查询仅返回指定字段的问题求助
错误原因
你的代码存在语法错误:MongoDB find() 方法的第二个投影参数(用于指定返回字段)必须是一个完整的对象,你没有把email:1等字段规则包裹在大括号{}内,导致参数解析失败,过滤规则无法生效。
正确实现
原生MongoDB / Mongoose通用传参写法
字段规则需要用大括号包裹,如下:
// 默认会返回_id字段,不需要可主动添加_id:0关闭 UserDoc.find({}, { email: 1, dob: 1, hasInsurance: 1, isMarried: 1 })
Mongoose链式调用写法(可读性更高)
也可以用select方法单独指定返回字段:
// 字符串写法,多个字段用空格分隔 UserDoc.find({}).select('email dob hasInsurance isMarried') // 对象写法,规则和投影参数一致 UserDoc.find({}).select({ email: 1, dob: 1, hasInsurance: 1, isMarried: 1 })
注意事项
MongoDB投影规则不支持同时混用字段包含和排除,仅_id字段的排除规则可以和其他字段的包含规则共存。
内容的提问来源于stack exchange,提问作者Mhd
相关产品推荐
相关产品推荐

