как зациклить все коллекции mongodb и данные коллекции внутри цикла в pymongo - PullRequest
0 голосов
/ 17 октября 2019

Я читаю все коллекции базы данных 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)

Db

1-я коллекция

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

2-я коллекция

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

3-я коллекция

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

в нем должны печататься имена коллекций и данные 1021 каждой коллекции.

1 Ответ

1 голос
/ 18 октября 2019

Ключевым изменением является эта строка 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))
...