-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexport_doc_to_json_1.0.0.py
More file actions
64 lines (48 loc) · 1.87 KB
/
export_doc_to_json_1.0.0.py
File metadata and controls
64 lines (48 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# DocCOM: Das Script erstellt ein Ordner mit dem dbname und einen Ordner mit dem collectionname
# es exporiert jedes Dokument aus der gewünschten Collection in ein JSON file.
import pymongo
import json
import os
from bson import ObjectId
import codecs
SCRIPT_FILE = os.path.realpath(__file__)
DIRECTORY = os.path.dirname(SCRIPT_FILE)
dbname = ''
collectionname = ''
mongoserver = 'mongodb://0.0.0.0:27017'
# Pfad zum neuen Ordner angeben
mkdir_dbname = "/" + dbname + "/"
mkdir_collectionname = mkdir_dbname + collectionname + "/"
# Prüfe ob der Ordner bereits vorhanden
if os.path.exists(DIRECTORY + mkdir_dbname):
print('Datenbank Ordner vorhanden')
else:
# Datenbank Ordner erstellen
os.mkdir(DIRECTORY + mkdir_dbname)
if os.path.exists(DIRECTORY + mkdir_collectionname):
print('collection Ordner vorhanden')
else:
# Collection Ordner erstellen
os.mkdir(DIRECTORY + mkdir_collectionname)
print(mkdir_collectionname)
# Benutzerdefinierte Funktion zum Umwandeln von ObjectId in einen serialisierbaren String
def custom_json_encoder(obj):
if isinstance(obj, ObjectId):
return str(obj)
raise TypeError(f'Object of type {obj.__class__.__name__} is not JSON serializable')
# Verbindung zur MongoDB aufbauen
client = pymongo.MongoClient(mongoserver)
db = client[dbname]
collection = db[collectionname]
# Alle Dokumente aus der Collection abrufen
documents = collection.find()
# Jedes Dokument in eine separate JSON-Datei exportieren
counter = 0
for doc in documents:
file_name = f"{doc['_id']}.json"
with codecs.open(DIRECTORY + mkdir_collectionname + file_name, 'w', encoding='utf-8') as file:
json.dump(doc, file, default=custom_json_encoder, indent=4, ensure_ascii=False)
counter += 1
print(f"{counter}: {file_name}")
# Verbindung zur MongoDB trennen
client.close()