Mongo DB Task
This commit is contained in:
parent
933a8bd7a6
commit
f44ab769e1
@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 13,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@ -29,9 +29,26 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 14,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"{'_id': ObjectId('682a229550b2441237573064'), 'name': 'Ella', 'species': 'elephant'}\n",
|
||||||
|
"{'_id': ObjectId('682a229950b2441237573066'), 'name': 'Ella', 'species': 'elephant'}\n",
|
||||||
|
"{'_id': ObjectId('682a229950b2441237573067'), 'name': 'Babar', 'species': 'Elephant', 'zookeeper': 'John Doe'}\n",
|
||||||
|
"{'_id': ObjectId('682a229950b2441237573068'), 'name': 'Dumbo', 'species': 'Elephant', 'zookeeper': 'John Doe'}\n",
|
||||||
|
"{'_id': ObjectId('682a229950b2441237573069'), 'name': 'Melman', 'species': 'Giraffe', 'zookeeper': 'Jane Doe'}\n",
|
||||||
|
"{'_id': ObjectId('682a22f050b244123757306b'), 'name': 'Ella', 'species': 'elephant'}\n",
|
||||||
|
"{'_id': ObjectId('682a22f050b244123757306c'), 'name': 'Babar', 'species': 'Elephant', 'zookeeper': 'John Doe'}\n",
|
||||||
|
"{'_id': ObjectId('682a22f050b244123757306d'), 'name': 'Dumbo', 'species': 'Elephant', 'zookeeper': 'John Doe'}\n",
|
||||||
|
"{'_id': ObjectId('682a22f050b244123757306e'), 'name': 'Melman', 'species': 'Giraffe', 'zookeeper': 'Jane Doe'}\n",
|
||||||
|
"{'_id': ObjectId('682a239c50b2441237573070'), 'name': 'Ella', 'species': 'elephant'}\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# TODO: Mit dieser Zelle können Sie testen, ob die Verbindung zur MongoDB-Datenbank funktioniert.\n",
|
"# TODO: Mit dieser Zelle können Sie testen, ob die Verbindung zur MongoDB-Datenbank funktioniert.\n",
|
||||||
"\n",
|
"\n",
|
||||||
@ -60,18 +77,28 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 15,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"InsertManyResult([ObjectId('682a239c50b2441237573071'), ObjectId('682a239c50b2441237573072'), ObjectId('682a239c50b2441237573073')], acknowledged=True)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 15,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# TODO: Einfügen von Daten:\n",
|
"# Einfügen von Beispieldaten:\n",
|
||||||
"\n",
|
"db.animals.delete_many({})\n",
|
||||||
"# db.animals.insert_one(...)\n",
|
"db.animals.insert_many([\n",
|
||||||
"# db.animals.insert_many(...)\n",
|
" {'name': 'Babar', 'species': 'Elephant', 'zookeeper': 'John Doe'},\n",
|
||||||
"\n",
|
" {'name': 'Dumbo', 'species': 'Elephant', 'zookeeper': 'John Doe'},\n",
|
||||||
"# Falls Sie mehrere Collections nutzen...\n",
|
" {'name': 'Melman', 'species': 'Giraffe', 'zookeeper': 'Jane Doe'}\n",
|
||||||
"\n",
|
"])\n"
|
||||||
"# db.zookeeper.insert_one(...)"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -85,26 +112,36 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 16,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"--------------------------------\n",
|
||||||
|
"| Babar | Elephant | John Doe |\n",
|
||||||
|
"| Dumbo | Elephant | John Doe |\n",
|
||||||
|
"| Melman | Giraffe | Jane Doe |\n",
|
||||||
|
"--------------------------------\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# TODO: Ausgabe aller Daten\n",
|
"# Ausgabe aller Daten\n",
|
||||||
"def zoo_overview():\n",
|
"def zoo_overview():\n",
|
||||||
" pass\n",
|
" animals = list(db.animals.find({'zookeeper': {'$exists': True}}))\n",
|
||||||
"\n",
|
" name_width = max(len(a['name']) for a in animals)\n",
|
||||||
"# Beispielausgabe:\n",
|
" species_width = max(len(a['species']) for a in animals)\n",
|
||||||
"#\n",
|
" zk_width = max(len(a['zookeeper']) for a in animals)\n",
|
||||||
"# ----------------------------------------\n",
|
" sep = '-' * (name_width + species_width + zk_width + 10)\n",
|
||||||
"# | Babar | Elephant | John Doe |\n",
|
" print(sep)\n",
|
||||||
"# | Dumbo | Elephant | John Doe |\n",
|
" for a in animals:\n",
|
||||||
"# | Hathi | Elephant | John Doe |\n",
|
" print(f\"| {a['name']:<{name_width}} | {a['species']:<{species_width}} | {a['zookeeper']:<{zk_width}} |\")\n",
|
||||||
"# | Melman | Giraffe | Jane Doe |\n",
|
" print(sep)\n",
|
||||||
"# | Gloria | Giraffe | Jane Doe |\n",
|
|
||||||
"# ----------------------------------------\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
"# Testaufruf\n",
|
"# Testaufruf\n",
|
||||||
"zoo_overview()"
|
"zoo_overview()\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -122,7 +159,17 @@
|
|||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"Antwort: "
|
"Antwort: \n",
|
||||||
|
"\n",
|
||||||
|
"Ich habe mich für eine eingebettete Struktur entschieden, bei der der Name des Tierpflegers direkt in den Tierdokumenten gespeichert wird. Dadurch liegen alle relevanten Informationen in einem Dokument vor und Joins oder Aggregationen sind nicht nötig.\n",
|
||||||
|
"\n",
|
||||||
|
"**Vorteile:**\n",
|
||||||
|
"- Schnelle und einfache Abfragen ohne Joins.\n",
|
||||||
|
"- Einfaches Datenmodell mit geringer Komplexität.\n",
|
||||||
|
"\n",
|
||||||
|
"**Nachteile:**\n",
|
||||||
|
"- Datenredundanz, da Tierpflegerdaten in mehreren Dokumenten wiederholt werden.\n",
|
||||||
|
"- Risiko von Inkonsistenzen bei Änderungen an Tierpflegerdaten.\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user