Mongo DB Task
This commit is contained in:
		
							parent
							
								
									933a8bd7a6
								
							
						
					
					
						commit
						f44ab769e1
					
				@ -19,7 +19,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 1,
 | 
			
		||||
   "execution_count": 13,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
@ -29,9 +29,26 @@
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "execution_count": 14,
 | 
			
		||||
   "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": [
 | 
			
		||||
    "# TODO: Mit dieser Zelle können Sie testen, ob die Verbindung zur MongoDB-Datenbank funktioniert.\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
@ -60,18 +77,28 @@
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "execution_count": 15,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "outputs": [
 | 
			
		||||
    {
 | 
			
		||||
     "data": {
 | 
			
		||||
      "text/plain": [
 | 
			
		||||
       "InsertManyResult([ObjectId('682a239c50b2441237573071'), ObjectId('682a239c50b2441237573072'), ObjectId('682a239c50b2441237573073')], acknowledged=True)"
 | 
			
		||||
      ]
 | 
			
		||||
     },
 | 
			
		||||
     "execution_count": 15,
 | 
			
		||||
     "metadata": {},
 | 
			
		||||
     "output_type": "execute_result"
 | 
			
		||||
    }
 | 
			
		||||
   ],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "# TODO: Einfügen von Daten:\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "# db.animals.insert_one(...)\n",
 | 
			
		||||
    "# db.animals.insert_many(...)\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "# Falls Sie mehrere Collections nutzen...\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "# db.zookeeper.insert_one(...)"
 | 
			
		||||
    "# Einfügen von Beispieldaten:\n",
 | 
			
		||||
    "db.animals.delete_many({})\n",
 | 
			
		||||
    "db.animals.insert_many([\n",
 | 
			
		||||
    "    {'name': 'Babar', 'species': 'Elephant', 'zookeeper': 'John Doe'},\n",
 | 
			
		||||
    "    {'name': 'Dumbo', 'species': 'Elephant', 'zookeeper': 'John Doe'},\n",
 | 
			
		||||
    "    {'name': 'Melman', 'species': 'Giraffe', 'zookeeper': 'Jane Doe'}\n",
 | 
			
		||||
    "])\n"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
@ -85,26 +112,36 @@
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "execution_count": 16,
 | 
			
		||||
   "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": [
 | 
			
		||||
    "# TODO: Ausgabe aller Daten\n",
 | 
			
		||||
    "# Ausgabe aller Daten\n",
 | 
			
		||||
    "def zoo_overview():\n",
 | 
			
		||||
    "    pass\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "# Beispielausgabe:\n",
 | 
			
		||||
    "#\n",
 | 
			
		||||
    "# ----------------------------------------\n",
 | 
			
		||||
    "# | Babar      | Elephant   | John Doe   |\n",
 | 
			
		||||
    "# | Dumbo      | Elephant   | John Doe   |\n",
 | 
			
		||||
    "# | Hathi      | Elephant   | John Doe   |\n",
 | 
			
		||||
    "# | Melman     | Giraffe    | Jane Doe   |\n",
 | 
			
		||||
    "# | Gloria     | Giraffe    | Jane Doe   |\n",
 | 
			
		||||
    "# ----------------------------------------\n",
 | 
			
		||||
    "    animals = list(db.animals.find({'zookeeper': {'$exists': True}}))\n",
 | 
			
		||||
    "    name_width = max(len(a['name']) for a in animals)\n",
 | 
			
		||||
    "    species_width = max(len(a['species']) for a in animals)\n",
 | 
			
		||||
    "    zk_width = max(len(a['zookeeper']) for a in animals)\n",
 | 
			
		||||
    "    sep = '-' * (name_width + species_width + zk_width + 10)\n",
 | 
			
		||||
    "    print(sep)\n",
 | 
			
		||||
    "    for a in animals:\n",
 | 
			
		||||
    "        print(f\"| {a['name']:<{name_width}} | {a['species']:<{species_width}} | {a['zookeeper']:<{zk_width}} |\")\n",
 | 
			
		||||
    "    print(sep)\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "# Testaufruf\n",
 | 
			
		||||
    "zoo_overview()"
 | 
			
		||||
    "zoo_overview()\n"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
@ -122,7 +159,17 @@
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "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