Python 熊猫数据帧与远程mongodb的高效交叉?

Python 熊猫数据帧与远程mongodb的高效交叉?,python,mongodb,pandas,pymongo,Python,Mongodb,Pandas,Pymongo,我在本地机器上有一个python pandas数据框架,可以访问远程mongodb服务器,该服务器有额外的数据,我可以通过pymongo查询 如果我的本地数据框很大,比如说40k行,每行有3列,那么检查本地数据框功能与包含数百万文档的远程集合的交集的最有效方法是什么 我在这里寻求一般性建议。我想我可以从这3个特性中选取一个不同的值列表,并在$or find语句中使用其中的每一个,但是如果我在这3个特性中有一个有90k个不同的值,这似乎是个坏主意 因此,任何意见都是非常受欢迎的。我没有将本地数据帧

我在本地机器上有一个python pandas数据框架,可以访问远程mongodb服务器,该服务器有额外的数据,我可以通过pymongo查询

如果我的本地数据框很大,比如说40k行,每行有3列,那么检查本地数据框功能与包含数百万文档的远程集合的交集的最有效方法是什么

我在这里寻求一般性建议。我想我可以从这3个特性中选取一个不同的值列表,并在$or find语句中使用其中的每一个,但是如果我在这3个特性中有一个有90k个不同的值,这似乎是个坏主意

因此,任何意见都是非常受欢迎的。我没有将本地数据帧插入远程服务器的权限,我只有选择/查找权限


非常感谢

正如您已经解释的,您将无法插入数据。因此,唯一可能的是首先将唯一值放入列表。
df['column\u name'].unique()
。然后可以使用
.find()
方法中的
$in
运算符,并将列表作为参数传递。如果需要时间或者太多。然后将您的列表分成相等的块,我的意思是列表的列表
[[id1,id2,id3],[id4,id5,id6]…]
,并对列表中的子列表执行for循环
:db.xyz.find({'key':{'in':sublist},{'u id':1})
,并在
$in
操作符中使用子列表作为参数。然后,对于每次迭代,如果值存在于数据库中,它将返回
\u id
,我们可以轻松地将其存储在一个空列表中并附加它,我们将能够在值存在于集合中的情况下获得所有id


所以这就是我要做的。不一定是最好的

谢谢你的建议!我尝试从每个特征中使用不同的值,并使用$In中的值,以便提取数据流的子集,然后我可以使用大熊猫交叉来找到匹配的行——我没有考虑的是,来自一个特征的不同的值集足以有效地查询远程集合中的每个文档。最后,我对这3个特性中的每一个都使用了$and,并在mongodb服务器上每行使用一个查询。它确实有效,我只是不喜欢这样做,因为我觉得这不是一个好的方式。但再次感谢!