如何连接多个pymongo Cursor?如果没有,那么如何从多个Cursor中获取结果并创建一个新的?
示例:
result1 = db[collection].find(query1)
result2 = db[collection].find(query2)
concat_result = result1 + result2 #something like that.
更新:
这里的所有答案似乎都考虑到查询的格式相同。例如。 query1
可能会在日期之间获得2个文档,因为query2
可能会按类别对文档进行排序,并且可能会受到5的限制。$or
对于我需要的内容来说过于同质。在连接这两个查询之后,我需要根据另一个键对它们进行排序。
有关详细信息,班级Printer
需要收到pymongo.Cursor
且只有一个,而且我对此感到困惑。
答案 0 :(得分:1)
最简单的方法是使用mongo $或类似
的运算符db[collection].find({'$or': [query1, query2]})
或者如果你必须在python中这样做
def concat_results(*results):
ids = set()
for result in results:
for v in result:
if v['_id'] not in ids:
ids.add(v['_id'])
yield v1
concat_result = list(concat_results(result1, result2))
答案 1 :(得分:0)
是的,明智的解决方案是使用$或如上所述。 如果你想以pythonic方式这样做,那么你可以:
a = [item for item in db[collection].find({filters},{select_fields})]
b = [item for item in db[collection].find({filters},{select_fields})]
c = []
for x,y in zip(a,b):
c += [x, y]