Created
November 14, 2013 05:37
-
-
Save catherinedevlin/7461964 to your computer and use it in GitHub Desktop.
From Dayton Dynamic Languages Nov 13 meeting on MongodDB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "metadata": { | |
| "name": "" | |
| }, | |
| "nbformat": 3, | |
| "nbformat_minor": 0, | |
| "worksheets": [ | |
| { | |
| "cells": [ | |
| { | |
| "cell_type": "heading", | |
| "level": 1, | |
| "metadata": {}, | |
| "source": [ | |
| "MongoDB" | |
| ] | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "Like an RDBMS" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "- uses a client and a server\n", | |
| "- cross-language access" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo\n", | |
| "show dbs" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: test\n", | |
| "bronto\t7.9501953125GB\n", | |
| "five\t0.203125GB\n", | |
| "google_analytics\t19.9443359375GB\n", | |
| "local\t0.078125GB\n", | |
| "netsuite\t3.9521484375GB\n", | |
| "small\t0.203125GB\n", | |
| "test\t0.203125GB\n", | |
| "v\t0.203125GB\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 4 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.dropDatabase()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"dropped\" : \"dayton\", \"ok\" : 1 }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 3 | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "Different jargon" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "- Database -> database\n", | |
| "- Table (or relation) -> collection\n", | |
| "- Row (or tuple) -> document" | |
| ] | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "Schemaless: Mentioning it is creating it" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Handy and terrifying" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo\n", | |
| "use dayton;\n", | |
| "db.members.insert({'name': 'Ken', 'language': 'Perl'})" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: test\n", | |
| "switched to db dayton\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 5 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo\n", | |
| "show dbs;\n", | |
| "use dayton;\n", | |
| "show collections;" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: test\n", | |
| "bronto\t7.9501953125GB\n", | |
| "dayton\t0.203125GB\n", | |
| "five\t0.203125GB\n", | |
| "google_analytics\t19.9443359375GB\n", | |
| "local\t0.078125GB\n", | |
| "netsuite\t3.9521484375GB\n", | |
| "small\t0.203125GB\n", | |
| "test\t0.203125GB\n", | |
| "v\t0.203125GB\n", | |
| "switched to db dayton\n", | |
| "members\n", | |
| "system.indexes\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 8 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo\n", | |
| "use dayton;\n", | |
| "db.members.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: test\n", | |
| "switched to db dayton\n", | |
| "{ \"_id\" : ObjectId(\"528418c9b8fa004981577216\"), \"name\" : \"Ken\", \"language\" : \"Perl\" }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 9 | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "Structure in documents" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.insert({name: \"Grant\", language: [\"PHP\", \"Perl\"]})\n", | |
| "db.members.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : ObjectId(\"528418c9b8fa004981577216\"), \"name\" : \"Ken\", \"language\" : \"Perl\" }\n", | |
| "{ \"_id\" : ObjectId(\"52841a211de978769fc0ce4c\"), \"name\" : \"Grant\", \"language\" : [ \"PHP\", \"Perl\" ] }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 10 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "bob = {name: \"Bob\", language: \"Python\", \n", | |
| " spouse: {\"name\": \"\"},\n", | |
| " pets: [{\"name\": \"Fido\", \"species\": \"dog\"}, \n", | |
| " {\"name\": \"Sonic\", \"species\": \"hedgehog\"}]\n", | |
| " };\n", | |
| "db.members.insert(bob)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{\n", | |
| "\t\"name\" : \"Bob\",\n", | |
| "\t\"language\" : \"Python\",\n", | |
| "\t\"spouse\" : {\n", | |
| "\t\t\"name\" : \"\"\n", | |
| "\t},\n", | |
| "\t\"pets\" : [\n", | |
| "\t\t{\n", | |
| "\t\t\t\"name\" : \"Fido\",\n", | |
| "\t\t\t\"species\" : \"dog\"\n", | |
| "\t\t},\n", | |
| "\t\t{\n", | |
| "\t\t\t\"name\" : \"Sonic\",\n", | |
| "\t\t\t\"species\" : \"hedgehog\"\n", | |
| "\t\t}\n", | |
| "\t]\n", | |
| "}\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 11 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : ObjectId(\"528418c9b8fa004981577216\"), \"name\" : \"Ken\", \"language\" : \"Perl\" }\n", | |
| "{ \"_id\" : ObjectId(\"52841a211de978769fc0ce4c\"), \"name\" : \"Grant\", \"language\" : [ \"PHP\", \"Perl\" ] }\n", | |
| "{ \"_id\" : ObjectId(\"52841a91b57f8e18a0ac79a7\"), \"name\" : \"Bob\", \"language\" : \"Python\", \"spouse\" : { \"name\" : \"\" }, \"pets\" : [ \t{ \t\"name\" : \"Fido\", \t\"species\" : \"dog\" }, \t{ \t\"name\" : \"Sonic\", \t\"species\" : \"hedgehog\" } ] }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 12 | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "finding" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.find({pets: [ \t{ \t\"name\" : \"Fido\", \t\"species\" : \"dog\" }, \t{ \t\"name\" : \"Sonic\", \t\"species\" : \"hedgehog\" } ]});" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : ObjectId(\"52841a91b57f8e18a0ac79a7\"), \"name\" : \"Bob\", \"language\" : \"Python\", \"spouse\" : { \"name\" : \"\" }, \"pets\" : [ \t{ \t\"name\" : \"Fido\", \t\"species\" : \"dog\" }, \t{ \t\"name\" : \"Sonic\", \t\"species\" : \"hedgehog\" } ] }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 17 | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 3, | |
| "metadata": {}, | |
| "source": [ | |
| "indexing" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.find({name: \"Grant\"}).explain();" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{\n", | |
| "\t\"cursor\" : \"BasicCursor\",\n", | |
| "\t\"isMultiKey\" : false,\n", | |
| "\t\"n\" : 1,\n", | |
| "\t\"nscannedObjects\" : 3,\n", | |
| "\t\"nscanned\" : 3,\n", | |
| "\t\"nscannedObjectsAllPlans\" : 3,\n", | |
| "\t\"nscannedAllPlans\" : 3,\n", | |
| "\t\"scanAndOrder\" : false,\n", | |
| "\t\"indexOnly\" : false,\n", | |
| "\t\"nYields\" : 0,\n", | |
| "\t\"nChunkSkips\" : 0,\n", | |
| "\t\"millis\" : 0,\n", | |
| "\t\"indexBounds\" : {\n", | |
| "\t\t\n", | |
| "\t},\n", | |
| "\t\"server\" : \"elli:27017\"\n", | |
| "}\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 18 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.ensureIndex({pets: 1});\n", | |
| "db.members.find({name: \"Grant\"}).explain();" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{\n", | |
| "\t\"cursor\" : \"BtreeCursor name_1\",\n", | |
| "\t\"isMultiKey\" : false,\n", | |
| "\t\"n\" : 1,\n", | |
| "\t\"nscannedObjects\" : 1,\n", | |
| "\t\"nscanned\" : 1,\n", | |
| "\t\"nscannedObjectsAllPlans\" : 1,\n", | |
| "\t\"nscannedAllPlans\" : 1,\n", | |
| "\t\"scanAndOrder\" : false,\n", | |
| "\t\"indexOnly\" : false,\n", | |
| "\t\"nYields\" : 0,\n", | |
| "\t\"nChunkSkips\" : 0,\n", | |
| "\t\"millis\" : 0,\n", | |
| "\t\"indexBounds\" : {\n", | |
| "\t\t\"name\" : [\n", | |
| "\t\t\t[\n", | |
| "\t\t\t\t\"Grant\",\n", | |
| "\t\t\t\t\"Grant\"\n", | |
| "\t\t\t]\n", | |
| "\t\t]\n", | |
| "\t},\n", | |
| "\t\"server\" : \"elli:27017\"\n", | |
| "}\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 20 | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "updating" | |
| ] | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 3, | |
| "metadata": {}, | |
| "source": [ | |
| "danger!" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.find({name: \"Bob\"})" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : ObjectId(\"52841a91b57f8e18a0ac79a7\"), \"name\" : \"Bob\", \"language\" : \"Python\", \"spouse\" : { \"name\" : \"\" }, \"pets\" : [ \t{ \t\"name\" : \"Fido\", \t\"species\" : \"dog\" }, \t{ \t\"name\" : \"Sonic\", \t\"species\" : \"hedgehog\" } ] }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 21 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.update({name: \"Bob\"}, {cm: 180});" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 22 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.find();" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : ObjectId(\"528418c9b8fa004981577216\"), \"name\" : \"Ken\", \"language\" : \"Perl\" }\n", | |
| "{ \"_id\" : ObjectId(\"52841a211de978769fc0ce4c\"), \"name\" : \"Grant\", \"language\" : [ \"PHP\", \"Perl\" ] }\n", | |
| "{ \"_id\" : ObjectId(\"52841a91b57f8e18a0ac79a7\"), \"cm\" : 180 }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 23 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Note that, by default, only one document is updated. Fourth arg = true enables multi-update." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.update({name: \"Grant\"}, {$set: {cm: 180}}, true, true);" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 31 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : ObjectId(\"528418c9b8fa004981577216\"), \"name\" : \"Ken\", \"language\" : \"Perl\" }\n", | |
| "{ \"_id\" : ObjectId(\"52841a91b57f8e18a0ac79a7\"), \"cm\" : 180 }\n", | |
| "{ \"_id\" : ObjectId(\"52841a211de978769fc0ce4c\"), \"cm\" : 180, \"language\" : [ \"PHP\", \"Perl\" ], \"name\" : \"Grant\" }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 32 | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 3, | |
| "metadata": {}, | |
| "source": [ | |
| "need the `$set` modifier" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.update({name: \"Ken\"}, {$set: {cm: 185}});\n", | |
| "db.members.find({name: \"Ken\"});" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.remove({name: null})\n", | |
| "db.members.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "From your language" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "import pymongo\n", | |
| "client = pymongo.Connection()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 33 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "db = client.dayton\n", | |
| "db" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "pyout", | |
| "prompt_number": 34, | |
| "text": [ | |
| "Database(Connection('localhost', 27017), u'dayton')" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 34 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "db.members.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "pyout", | |
| "prompt_number": 35, | |
| "text": [ | |
| "<pymongo.cursor.Cursor at 0x32a2a50>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 35 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "for member in db.members.find():\n", | |
| " print member" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "{u'_id': ObjectId('528418c9b8fa004981577216'), u'name': u'Ken', u'language': u'Perl'}\n", | |
| "{u'_id': ObjectId('52841a91b57f8e18a0ac79a7'), u'cm': 180.0}\n", | |
| "{u'_id': ObjectId('52841a211de978769fc0ce4c'), u'language': [u'PHP', u'Perl'], u'cm': 180.0, u'name': u'Grant'}\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 36 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "dave = {'name': 'Dave', 'language': 'Python'}\n", | |
| "db.members.insert(dave)\n", | |
| "list(db.members.find())" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "pyout", | |
| "prompt_number": 37, | |
| "text": [ | |
| "[{u'_id': ObjectId('528418c9b8fa004981577216'),\n", | |
| " u'language': u'Perl',\n", | |
| " u'name': u'Ken'},\n", | |
| " {u'_id': ObjectId('52841a91b57f8e18a0ac79a7'), u'cm': 180.0},\n", | |
| " {u'_id': ObjectId('52841a211de978769fc0ce4c'),\n", | |
| " u'cm': 180.0,\n", | |
| " u'language': [u'PHP', u'Perl'],\n", | |
| " u'name': u'Grant'},\n", | |
| " {u'_id': ObjectId('52842205417f34189f8d7f61'),\n", | |
| " u'language': u'Python',\n", | |
| " u'name': u'Dave'}]" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 37 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "no joins" | |
| ] | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 3, | |
| "metadata": {}, | |
| "source": [ | |
| "two-query method" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.languages.insert({_id: \"Ruby\", creator: \"Matz\"});\n", | |
| "db.languages.insert({_id: \"Python\", creator: \"Guido\"});\n", | |
| "db.languages.insert({_id: \"Perl\", creator: \"Larry\"});\n", | |
| "db.languages.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : \"Ruby\", \"creator\" : \"Matz\" }\n", | |
| "{ \"_id\" : \"Python\", \"creator\" : \"Guido\" }\n", | |
| "{ \"_id\" : \"Perl\", \"creator\" : \"Larry\" }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 38 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "for member in db.members.find():\n", | |
| " print member.get('name')\n", | |
| " if 'language' in member:\n", | |
| " print member['language']\n", | |
| " lang = db.languages.find_one({'_id': member['language']})\n", | |
| " if lang:\n", | |
| " print lang['creator']\n", | |
| " print" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "Ken\n", | |
| "Perl\n", | |
| "Larry\n", | |
| "\n", | |
| "None\n", | |
| "\n", | |
| "Grant\n", | |
| "[u'PHP', u'Perl']\n", | |
| "\n", | |
| "Dave\n", | |
| "Python\n", | |
| "Guido\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 39 | |
| }, | |
| { | |
| "cell_type": "heading", | |
| "level": 2, | |
| "metadata": {}, | |
| "source": [ | |
| "nesting" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.members.update({language: \"Python\"}, {$set: {language: {name: \"Python\", creator: \"Guido\"}}})\n", | |
| "db.members.update({language: \"Ruby\"}, {$set: {language: {name: \"Ruby\", creator: \"Matz\"}}})\n", | |
| "db.members.update({language: \"Perl\"}, {$set: {language: {name: \"Perl\", creator: \"Larry\"}}})\n", | |
| "db.members.find()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "MongoDB shell version: 2.4.6\n", | |
| "connecting to: dayton\n", | |
| "{ \"_id\" : ObjectId(\"52841a91b57f8e18a0ac79a7\"), \"cm\" : 180 }\n", | |
| "{ \"_id\" : ObjectId(\"52841a211de978769fc0ce4c\"), \"cm\" : 180, \"language\" : [ \"PHP\", \"Perl\" ], \"name\" : \"Grant\" }\n", | |
| "{ \"_id\" : ObjectId(\"52842205417f34189f8d7f61\"), \"language\" : { \"name\" : \"Python\", \"creator\" : \"Guido\" }, \"name\" : \"Dave\" }\n", | |
| "{ \"_id\" : ObjectId(\"528418c9b8fa004981577216\"), \"language\" : { \"name\" : \"Perl\", \"creator\" : \"Larry\" }, \"name\" : \"Ken\" }\n", | |
| "bye\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 40 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "for member in db.members.find():\n", | |
| " if 'name' in member:\n", | |
| " print member['name']\n", | |
| " if 'language' in member:\n", | |
| " if not isinstance(member['language'], list):\n", | |
| " print member['language']['creator']" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "Grant\n", | |
| "Dave\n", | |
| "Guido\n", | |
| "Ken\n", | |
| "Larry\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 43 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "- 16 MB record limit\n", | |
| "- redundant storage" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "%%script mongo dayton\n", | |
| "db.dropDatabase()" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [] | |
| } | |
| ], | |
| "metadata": {} | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment