pymongo 批量插入数据时,不再进行,无报错无结束

# !/usr/bin/python3
# encoding=utf-8

import db
from pymongo import MongoClient

user = db.get_db_user()
recharge = db.get_db_recharge()
consume = db.get_db_consume()
client = MongoClient('localhost', 27017)
db = client.test
col_new = db.new


lookup1 = {'$lookup': {
        'from': 'recharge',
        'localField': '_id',
        'foreignField': 'uid',
        'as': 'recharge'
}}
lookup2 = {'$lookup': {
        'from': 'consume',
        'localField': '_id',
        'foreignField': 'uid',
        'as': 'consume'
}}
# lookup 关联表匹配uid
replaceRoot1 = {'$replaceRoot': {'newRoot': {'$mergeObjects': [{'$arrayElemAt': ['$recharge', 0]}, '$$ROOT']}}}
replaceRoot2 = {'$replaceRoot': {'newRoot': {'$mergeObjects': [{'$arrayElemAt': ['$consume', 0]}, '$$ROOT']}}}
# replaceRoot 提升到顶级并替换所有其他字段
# mergeObjects 将多个文档合并为一个文档
# arrayElemAt 返回指定数组索引处的元素
# ROOT 系统变量 引用当前正在聚合管道阶段中处理的根文档,即顶级文档
project = {'$project': {
        '_id': 1,
        'nickname': 1,
        'phone': 1,
        'regDate': 1,
        'lastLogin': 1,
        'balance': 1,
        'totalRecharge': 1,
        'jcode': 1,
        'consume.amount': 1,
        'consume.consumeDate': 1,
        'recharge.real': 1,
        'recharge.amount': 1,
        'recharge.from': 1,
        'recharge.rechargeDate': 1,
        'recharge.tradeNo': 1
}}
# project 筛选需要保留字段
pipeline = [lookup1, lookup2, replaceRoot1, replaceRoot2, project]
result = user.aggregate(pipeline)
num = 0
for i in result:
    num = num + 1
    # col_new.insert_one(i)
    print(num)
    print(i)

打印result的元素 以及插入到new集合 都是在101个元素时就不再进行。不知道是什么原因。
user集合内元素个数没问题 pipeline条件删除了几个也不行!

关键是昨天没这毛病 代码还传到github备份过 今天在project里增加了个字段,把昨天的new集合删了再写入就一直不行了。
图片描述

阅读 3.7k
1 个回答

@欧兜兜是素姀

昨天晚上开了一晚上 今天早上发现插入好了 但是没有打印并且报错 但是new表里是12020条数据

图片描述

图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题