Mongoose中如何根据嵌套对象的属性过滤查询外层文档?
基于嵌套属性查询记录的实现方案
以下分两种常见使用场景给出对应实现代码:
1. 原生JavaScript数组查询
如果collection是普通JS数组,直接在find的回调函数中访问嵌套属性做判断即可,推荐加可选链避免属性不存在时报错:
const collection = [ { inner_obj: { prop: "A" } } ] // 示例:查询inner_obj.prop值为"A"的外层记录 const result = collection.find( item => item.inner_obj?.prop === "A" )
如需兼容不支持可选链的旧运行环境,可以改写成如下写法:
const result = collection.find( item => item.inner_obj && item.inner_obj.prop === "A" )
2. MongoDB集合查询
如果collection是MongoDB的集合实例(Node.js驱动、Mongoose等开发场景),使用MongoDB的点语法访问嵌套属性即可:
// 示例:查询inner_obj.prop值为"A"的外层记录 collection.find( { "inner_obj.prop": "A" } )
如果是多条件组合查询,把嵌套字段的查询条件和其他条件平级放在查询对象中即可正常生效。
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

