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

如何在MongoDB中按同一键的两个值查询集合所有文档?

正确查询MongoDB中匹配值列表的文档并转换为DataFrame

你之前的两种写法都存在问题:

  • db.collection.find({'key_1': ['a', 'd']}):MongoDB会将数组视为精确匹配条件,只会返回key_1的值恰好是['a', 'd']的文档,显然不符合你的需求。
  • db.collection.find({'key_1': 'a', 'key_1': 'd'}):Python字典不允许重复键,后写的'key_1': 'd'会覆盖前面的'key_1': 'a',实际只会查询key_1为d的文档。

正确实现方式

MongoDB提供了$in操作符,专门用于匹配字段值在指定列表中的文档,结合pymongo和pandas的完整代码如下:

from pymongo import MongoClient
import pandas as pd

# 连接MongoDB实例(根据你的实际配置修改)
client = MongoClient('mongodb://localhost:27017/')
# 指定数据库和集合
db = client['你的数据库名']
collection = db['你的集合名']

# 构建查询条件:匹配key_1值为'a'或'd'的文档
query = {'key_1': {'$in': ['a', 'd']}}
# 执行查询获取游标
cursor = collection.find(query)

# 将游标转换为DataFrame
result_df = pd.DataFrame(list(cursor))
# 查看结果
print(result_df)

MongoDB Compass中的查询写法

在Compass的查询输入框中,直接输入以下JSON格式的条件即可:

{"key_1": {"$in": ["a", "d"]}}

这样就能得到你需要的_id为1、2、3的所有文档,再通过pandas转换为DataFrame即可完成需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:42:28