Не удается распечатать значения из коллекций в pymongo

#python #mongodb #pymongo

#python #mongodb #pymongo

Вопрос:

Я пытаюсь получить значения всех баз данных, существующих в mongodb, выполнить итерацию по всем базам данных и коллекциям, а затем распечатать документы. Я могу распечатать документ, передающий коллекцию как переменную, но не могу выполнить итерацию по всем базам данных и коллекциям (как значение переменной). Кто-нибудь знает, поддерживает ли pymongo динамическую передачу в качестве значения, а не передачу коллекции и базы данных в качестве самой переменной??

 client = MongoClient('mongodb://localhost:27017/')

names = client.database_names()
for dbName in names:
    print(dbName)
    db = client.dbName
    collectionNames = client[dbName].collection_names()
    for colecao in collectionNames: 
        print(colecao)
        cursor = db.colecao # choosing the collection you need
        print(cursor)
        cursor2 = cursor.find()  # get documents
        for document in cursor2:
            pprint(document)
  

Имена баз данных и имена коллекций печатаются нормально, но курсор печати возвращает:
«Коллекция (база данных(MongoClient(host=[‘localhost:27017′], document_class=dict, tz_aware=False, connect= True), u’Dbname’), u’colecao’)»

Это связано с именем переменных.

Ответ №1:

Вместо

client.dbName

использовать

client.get_database(dbName)

и вместо

курсор = db.colecao

использовать

курсор = db.get_collection(colecao)