繁体   English   中英

如何在 pymongo 中循环 mongodb 的所有 collections 和循环内的收集数据

[英]how to loop all collections of mongodb and data of collection inside loop in pymongo

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

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

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)

D b

第一个集合

{
    "_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

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

关键变化是这一行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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM