【问题标题】:how to loop all collections of mongodb and data of collection inside loop in pymongo如何在pymongo中循环所有mongodb集合和循环内的集合数据
【发布时间】:2020-02-14 14:51:29
【问题描述】:

我正在读取 mongodb 数据库的所有集合,同时在 for 循环中循环集合名称以使用 pymongo 动态获取每个集合数据。

这是在 python 3.7 和 mongodb 3.4 上运行,带有 pymongo

from pymongo import MongoClient
from bson.objectid import ObjectId
import json


client = MongoClient("localhost", 27017, maxPoolSize=50)
#print(client)
mydatabase = client["testdb"]

collections = mydatabase.collection_names(include_system_collections=False)

for collectionName in collections:
    print(collectionName)

    mydata = mydatabase.collectionName.find({})

    for value in mydata:
        print(value)
        for key,valueOFproject in value:
            print(key)
            print(value)

数据库

第一集

{
    "_id" : "hiphdkTest_HIPHDK_76P1_P00_19WW09Test",
    "project" : "hiphdktest",
    "config" : "HIPHDK_76P1_P00_19WW09test",
    "manual" : {
        "tag1" : "fdsfsdfsd",
        "No" : "No",
        "prqdata1" : "fsdfadfasdfasdfsdfsd",
        "admin1" : "dbhiphdk"
    }
}

第二次收集

{
    "_id" : "hiphdk_HIPHDK_76P1_P00",
    "project" : "hiphdk",
    "config" : "HIPHDK_76P1_P00",
    "manual" : {
        "tag1" : "fdsfsdfsd",
        "No" : "No",
        "prqdata1" : "fsdfadfasdfasdfsdfsd",
        "admin1" : "dbhiphdk"
    }
}

第三集

{
    "_id" : "hiphdk_HIPHDK_76P1_P00_19WW09",
    "project" : "hiphdk",
    "config" : "HIPHDK_76P1_P00_19WW09",
    "manual" : {
        "tag1" : "fdsfsdfsd",
        "No" : "No",
        "prqdata1" : "fsdfadfasdfasdfsdfsd",
        "admin1" : "dbhiphdk"
    }
}

只获取集合名称

hiphdk_HIPHDK_76P1_P00_19WW09 hiphdk_HIPHDK_76P1_P00 hiphdkTest_HIPHDK_76P1_P00_19WW09Test

它应该打印每个集合的集合名称和数据。

【问题讨论】:

    标签: python pymongo


    【解决方案1】:

    关键变化是这一行mydata = mydatabase[collectionName].find({})

    看看这是否能满足你的需要:

    from pymongo import MongoClient
    from bson.json_util import dumps
    
    client = MongoClient("localhost", 27017, maxPoolSize=50)
    mydatabase = client["testdb"]
    
    collections = mydatabase.list_collection_names(include_system_collections=False)
    
    for collectionName in collections:
        mydata = mydatabase[collectionName].find({})
        for value in mydata:
            print(dumps(value))
    

    【讨论】:

      猜你喜欢
      • 2018-12-25
      • 1970-01-01
      • 2016-08-07
      • 2012-11-03
      • 2019-10-11
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多