鍍金池/ 問答/Python  數(shù)據(jù)庫  Office/ pymongo 批量插入數(shù)據(jù)時,不再進行,無報錯無結(jié)束

pymongo 批量插入數(shù)據(jù)時,不再進行,無報錯無結(jié)束

# !/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 關(guān)聯(lián)表匹配uid
replaceRoot1 = {'$replaceRoot': {'newRoot': {'$mergeObjects': [{'$arrayElemAt': ['$recharge', 0]}, '$$ROOT']}}}
replaceRoot2 = {'$replaceRoot': {'newRoot': {'$mergeObjects': [{'$arrayElemAt': ['$consume', 0]}, '$$ROOT']}}}
# replaceRoot 提升到頂級并替換所有其他字段
# mergeObjects 將多個文檔合并為一個文檔
# arrayElemAt 返回指定數(shù)組索引處的元素
# ROOT 系統(tǒng)變量 引用當(dāng)前正在聚合管道階段中處理的根文檔,即頂級文檔
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集合內(nèi)元素個數(shù)沒問題 pipeline條件刪除了幾個也不行!

關(guān)鍵是昨天沒這毛病 代碼還傳到github備份過 今天在project里增加了個字段,把昨天的new集合刪了再寫入就一直不行了。
圖片描述

回答
編輯回答
哎呦喂

@歐兜兜是素姀

昨天晚上開了一晚上 今天早上發(fā)現(xiàn)插入好了 但是沒有打印并且報錯 但是new表里是12020條數(shù)據(jù)

圖片描述

圖片描述

2017年3月6日 03:17