#python #mongodb #pymongo
#python #mongodb #pymongo
Вопрос:
У меня не так много опыта, я просмотрел много статей, результат ни к чему не привел. У меня есть небольшая коллекция (85 документов), мне нужно экспортировать ее с помощью python. Да, это был он. Если с вставкой документов, установкой индексов проблем нет, то здесь они появились.
Как я понимаю, необходимо использовать метод find
. Вот пример документа коллекции.
{"_id":{"$oid":"6012b7e0fe7371258899441e"}, "date":"2021-01-23","confirmed":12638,"deaths":113,"recovered":10710,
"region_name":"Республика Адыгея",
"region_code":"RU-AD","isolation_start":"16.07.2020 21:58:11",
"level":3,"self_isolation":null}
Как необходимо выполнить преобразования, чтобы получить csv? Если это не затруднит, могу ли я привести пример кода?
Комментарии:
1. почему бы вам не попробовать
pandas
? Вы извлекаете все документы, затем читаете их в pandas, а затем используетеpandas.to_csv()
2. @Epsi95, я пытался, но в итоге по какой-то причине навык не сработал, я добавил метод, который я сделал в ответе. Я был бы рад, если бы вы объяснили мне, как использовать pandas в этом случае.
3. @Epsi95, я понял, как это сделать, видимо, долго сидел за монитором и тупил. спасибо)
Ответ №1:
Видимо, я сидел за монитором. Я сделал два способа, может быть, кому-то это понадобится.
client = MongoClient('mongodb://localhost:27017/')
db = client.test_import
collection = db.myimport2
csv_columns = ['_id','date','confirmed', 'deaths', 'recovered', 'region_name', 'region_code', 'isolation_start', 'level', 'self_isolation']
with open('mycsvfile.csv', 'w', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for post in collection.find():
writer.writerow(post)
и панды
client = MongoClient('mongodb://localhost:27017/')
db = client.test_import
collection = db.myimport2
df = pd.DataFrame(list(collection.find()))
df.to_csv('mycsvfile2.csv')