在Azure Cosmos DB中根据属性值查找重复文档ID
获取Cosmos DB中重复property的所有文档ID
针对你100万文档的场景,以下是两种高效的查询方案,直接满足你获取重复property对应文档ID的需求:
方案1:返回所有重复文档的ID和对应property
这个查询先筛选出所有出现次数>1的property值,再匹配所有包含这些值的文档,返回具体的ID:
SELECT c.id, c.property FROM c WHERE c.property IN ( SELECT VALUE dupProp.property FROM dupProp GROUP BY dupProp.property HAVING COUNT(1) > 1 )
方案2:按重复property分组展示所有ID
如果需要直观看到每个重复property对应的所有ID集合,可以用ARRAY_AGG聚合函数,一次性拿到分组后的结果:
SELECT dupProp.property, ARRAY_AGG(dupProp.id) AS duplicate_ids, COUNT(1) AS occurrence_count FROM dupProp GROUP BY dupProp.property HAVING COUNT(1) > 1
性能优化提示
- 确保
property字段的范围索引处于启用状态(Cosmos DB默认对所有字段开启范围索引,若为自定义索引需确认包含该字段),否则GROUP BY和IN查询会触发全表扫描,性能骤降 - 若容器有分区键,尽量在查询中加入分区键过滤条件,缩小扫描范围
- 数据量过大时可设置
maxItemCount参数分页获取结果,避免查询超时
内容的提问来源于stack exchange,提问作者ben
相关产品推荐
相关产品推荐

