假设我有一个MongoDB集合,我在它上面运行两个查询,A和B.两个都返回集合中文档的索引列表。我想只得到A和B的结果中的那些记录,即集合的交集。
pymongo的一个天真的实现将是这样的:
cursor_result_A = db.collection.find(A)
result_A = [x for x in cursor_result_A]
cursor_result_B = db.collection.find({"$and":[{"_id":{"$in":result_A}}, B]})
然而,这种方法让我首先将第一个查询的所有结果从数据库拉到Python,然后在第一个查询中将其发回。这是非常低效的。
如何更有效地完成工作?