You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作MongoDB如何通过复合主键字典列表过滤查询匹配数据

MongoDB复合主键批量查询优化方案

你原本的实现逻辑是可行的,但存在冗余部分,我们可以根据实际场景做更简洁高效的优化:

通用场景(lista_pks中cod值不固定)

MongoDB默认将同一查询对象内的多个字段条件视为逻辑与关系,因此你额外嵌套的$and完全可以省略,只需要一行代码即可生成查询条件:

query = {"$or": lista_pks}

生成的查询结构如下,比你原本的写法更简洁,查询解析效率也更高:

{'$or': [
    {'pers_id': '00002', 'cod': '01'},
    {'pers_id': '00003', 'cod': '01'},
    ...
]}

特殊优化场景(lista_pks中cod值全部相同)

如果像你的示例一样,所有元素的cod字段都是同一个固定值,可以进一步优化为固定cod + $in匹配pers_id的写法,性能更高:

# 提取所有主键中的pers_id列表
pers_ids = [item["pers_id"] for item in lista_pks]
# 构造查询条件
query = {"cod": "01", "pers_id": {"$in": pers_ids}}

这种写法的优势:

  • 条件结构更简单,MongoDB查询优化器处理成本更低
  • 可以完美命中cod + pers_id的联合索引,当批量查询的主键数量较多时,性能远优于多条件$or的写法

内容的提问来源于stack exchange,提问作者Lanre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:27:03