MongoDB查询嵌套对象内数组属性匹配指定条件的文档问题
MongoDB嵌套文档数组查询异常排查
数据结构
Document: { "projects": { "projectName" : String, "employees": [String] } }
查询需求
筛选符合以下所有条件的文档:
- 包含项目名称为
"project1"的项目 - 该项目的
employees数组中存在员工"employee1"
问题表现
仅单独查询projects的单个嵌套属性时运行正常,添加嵌套数组的查询条件后,查询要么报错要么返回空结果。
已尝试的查询写法
原生MongoDB $elemMatch写法
db.documents.find({'projects': { $elemMatch: { name: "project1", $elemMatch: { employees: 'employee1' } } })
Meteor集合对应写法
Documents.findOne({'projects': { $elemMatch: { name: "project1", $elemMatch: { employees: 'employee1' } } })
嵌套字段直接查询写法
db.collection.find({ "projects.projectName": "project1", "projects.employees": "employee1" })
以上所有写法均未得到预期结果。
最终排查结果
经校验,上述查询语法本身不存在错误,问题根源为自身Schema定义错误,修正Schema后所有查询均可正常运行。
内容的提问来源于stack exchange,提问作者Gobliins
相关产品推荐
相关产品推荐

