#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)