Pymongo 合并集合(表)至另一个集合

目前有3个集合 user consume recharge
只想彻底的修改User集合 而非像lookup一样创建个临时的集合,有没有什么效率高的方法,毕竟数据较多。
目前用的聚合$replaceRoot$mergeObjects方法可以实现 但是速度太慢 CPU占用率极高

user = db.get_db_user()
recharge = db.get_db_recharge()
consume = db.get_db_consume()


lookup1 = {'$lookup': {
        'from': 'recharge',
        'localField': '_id',
        'foreignField': 'uid',
        'as': 'recharge'
}}
lookup2 = {'$lookup': {
        'from': 'consume',
        'localField': '_id',
        'foreignField': 'uid',
        'as': 'consume'
}}
replaceRoot1 = {'$replaceRoot': {'newRoot': {'$mergeObjects': [{'$arrayElemAt': ['$recharge', 0]}, '$$ROOT']}}}
replaceRoot2 = {'$replaceRoot': {'newRoot': {'$mergeObjects': [{'$arrayElemAt': ['$consume', 0]}, '$$ROOT']}}}
pipeline = [lookup1, lookup2, replaceRoot1, replaceRoot2]
result = user.aggregate(pipeline)
num = 0
for i in result:
    num = num + 1
    pprint.pprint(i)
print(num)
阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题