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 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