{ "cells": [ { "cell_type": "markdown", "id": "3c26ca48-39af-48b5-b31b-c6375a70d86e", "metadata": {}, "source": [ "# The `student` collection" ] }, { "cell_type": "code", "execution_count": null, "id": "661b3253-0983-4018-ad65-7f75d1e0b3fa", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from pandas import DataFrame\n", "\n", "import pymongo\n", "from pymongo import MongoClient" ] }, { "cell_type": "markdown", "id": "84eff9f8-d25c-4f74-a508-48d3f027d5d1", "metadata": {}, "source": [ "### Connect to the `school` database." ] }, { "cell_type": "code", "execution_count": null, "id": "e4e57507-9809-4e37-82d7-1420f086857e", "metadata": {}, "outputs": [], "source": [ "mongo_uri = 'mongodb://localhost:27017/'\n", "\n", "client = MongoClient(mongo_uri);\n", "client" ] }, { "cell_type": "code", "execution_count": null, "id": "242c1b23-8e5a-4efc-8b3a-b6e3ed17698e", "metadata": {}, "outputs": [], "source": [ "school_db = client.school\n", "school_db" ] }, { "attachments": { "fb79f341-d2b6-4a01-b17d-237732b25ba1.png": { "image/png": "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" } }, "cell_type": "markdown", "id": "ef02d922-0d10-4507-93a6-e16a24f315e9", "metadata": { "tags": [] }, "source": [ "## Create the `student` collection.\n", "![Screenshot 2023-04-30 at 11.55.43 PM.png](attachment:fb79f341-d2b6-4a01-b17d-237732b25ba1.png)" ] }, { "cell_type": "code", "execution_count": null, "id": "b42f62b3-00c9-4c2c-8307-34ef6d757d99", "metadata": {}, "outputs": [], "source": [ "school_db.student.drop()" ] }, { "cell_type": "code", "execution_count": null, "id": "a38a1693-69d8-4d9d-ba1e-7b8ee9c210e1", "metadata": {}, "outputs": [], "source": [ "student_coll = school_db.student\n", "student_coll" ] }, { "cell_type": "code", "execution_count": null, "id": "65ea7879-bf43-420d-a24b-f9ad7db88b79", "metadata": {}, "outputs": [], "source": [ "student_coll.insert_many(\n", " [ { 'student_id': 'S1001', 'last': 'Doe', 'first': 'John', 'contact_fk': 'C03' },\n", " { 'student_id': 'S1005', 'last': 'Novak', 'first': 'Tim', 'contact_fk': 'C04' },\n", " { 'student_id': 'S1009', 'last': 'Klein', 'first': 'Leslie', 'contact_fk': 'C05' },\n", " { 'student_id': 'S1014', 'last': 'Jane', 'first': 'Mary', 'contact_fk': 'C01' },\n", " { 'student_id': 'S1021', 'last': 'Smith', 'first': 'Kim', 'contact_fk': 'C02' }\n", " ]\n", ")" ] }, { "cell_type": "markdown", "id": "ca91c69d-3b91-4ed5-aa5b-b8829917b4e6", "metadata": {}, "source": [ "## Find students." ] }, { "cell_type": "code", "execution_count": null, "id": "8c2f3a02-5af3-46fd-ba73-68b8976576b1", "metadata": {}, "outputs": [], "source": [ "student_coll.find_one({'last': 'Klein'}, {'_id': 0})" ] }, { "cell_type": "markdown", "id": "83d03509-e6f6-450f-bcd8-47738973fdb6", "metadata": {}, "source": [ "#### Sort by last name." ] }, { "cell_type": "code", "execution_count": null, "id": "e8344208-d9a8-4d91-8d56-2412c7fbe5f3", "metadata": {}, "outputs": [], "source": [ "sorted_students = student_coll.find({}, {'_id': 0}).sort('last')\n", "DataFrame(sorted_students)" ] }, { "cell_type": "markdown", "id": "ed0c54fe-ecce-45cd-8df7-da6423d7c7f8", "metadata": {}, "source": [ "## Find students with an `or` condition." ] }, { "cell_type": "code", "execution_count": null, "id": "acde55a8-7cdd-4628-b7bc-ed8d36e5bf0b", "metadata": {}, "outputs": [], "source": [ "matched_students = student_coll.find( \n", " { '$or': [ {'student_id': 'S1014'}, {'first': 'Tim'} ] },\n", " {'_id': 0}\n", ")\n", "DataFrame(matched_students)" ] }, { "cell_type": "markdown", "id": "bbfb3caa-9c64-4529-aa9f-7f13c62c29cf", "metadata": {}, "source": [ "## What do we have so far?" ] }, { "cell_type": "code", "execution_count": null, "id": "266f1b27-dd30-458f-9940-c5b1b635bbab", "metadata": {}, "outputs": [], "source": [ "school_db.list_collection_names()" ] }, { "cell_type": "code", "execution_count": null, "id": "60e90d04-f424-42c9-a9d3-d4f657427be5", "metadata": {}, "outputs": [], "source": [ "client.close()" ] }, { "cell_type": "markdown", "id": "ef7c416b-174a-411e-be8c-dda13cce3e37", "metadata": {}, "source": [ "#### (c) 2023 by Ronald Mak" ] }, { "cell_type": "code", "execution_count": null, "id": "6119f847-1db2-4553-98ef-b7eef2aceca5", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.18" } }, "nbformat": 4, "nbformat_minor": 5 }