MongoDB Atlas Search中$elemMatch的等效实现方法
在MongoDB Atlas Search中实现类似$elemMatch的数组嵌套文档匹配
要筛选出jobs数组中存在**同时满足jd_id=12345且stage="Sourcing"**元素的候选者,可通过Atlas Search的compound查询结合嵌套字段路径实现,具体操作如下:
1. 准备Search索引
先确保为Candidate集合创建包含嵌套字段的Search索引,示例索引定义(可根据实际需求调整字段类型):
{ "mappings": { "dynamic": false, "fields": { "jobs": { "fields": { "jd_id": { "type": "number" }, "stage": { "type": "string" } }, "type": "embeddedDocuments" } } } }
2. 编写查询语句
使用compound.must子句同时指定两个嵌套字段的匹配条件,Atlas Search会自动匹配数组中同一个元素的所有条件,等效于传统$elemMatch的效果:
{ "index": "你的搜索索引名称", "compound": { "must": [ { "equals": { "path": "jobs.jd_id", "value": 12345 } }, { "equals": { "path": "jobs.stage", "value": "Sourcing" } } ] } }
效果说明
针对你提供的示例数据,该查询会返回候选者1(其jobs数组存在同时符合两个条件的元素),不会返回候选者2。
内容的提问来源于stack exchange,提问作者Manish
相关产品推荐
相关产品推荐

