>大åï¼æ¬èç奥ç§ï¼æ 人ä¸ä»¥ä¸ºç¶ï¼å°±æ¯ï¼ç¥å¨è身æ¾ç°ï¼è¢«å£çµç§°ä¹ï¼è¢«å¤©ä½¿çè§ï¼è¢«ä¼ äºå¤é¦ï¼è¢«ä¸äººä¿¡æï¼è¢«æ¥å¨è£èéã(1 TIMOTHY 3:16)
#MongoDBæ°æ®åº(1)
MongoDBå¼å§ç«äºï¼è¿æ¯æ¶ä»£åå±çéè¦ã为æ¤ï¼å¨è¿éä¹è¦æ¢è®¨ä¸ä¸å¦ä½ç¨Pythonæ¥æä½æ¤æ°æ®åºãèèå°è¯»è
对è¿ç§æ°æ®åºçäºè§£å¯è½æ¯å
³ç³»åæ°æ®åºéçï¼æä»¥ï¼è¦ç¨å¤ä¸ç¹çç¯å¹
æ¥ä»ç»ã
MongoDBæ¯å±äºNoSqlçã
NoSqlï¼Not Only Sqlï¼æçæ¯éå
³ç³»åçæ°æ®åºã宿¯ä¸ºäºå¤§è§æ¨¡Webåºç¨èççï¼å
¶ç¹å¾è¯¸å¦æ¨¡å¼èªç±ãæ¯æç®æå¤å¶ãç®åçAPIã大容鿰æ®çã
MongoDBæ¯NoSqlå
¶ä¸ï¼éæ©å®ï¼ä¸»è¦æ¯å 为æå欢ï¼ä¸é¢è¯´è¯´å®çç¹ç¹ã
- é¢åææ¡£åå¨
- 对任ä½å±æ§å¯ç´¢å¼
- å¤å¶åé«å¯ç¨æ§
- èªå¨åç
- 丰å¯çæ¥è¯¢
- å¿«é就尿´æ°
åºäºå®çç¹ç¹ï¼æ
é¿çé¢åå°±å¨äºï¼
- å¤§æ°æ®ï¼å¤ªæ¶é«¦äºï¼ä»¥ä¸å¯ä»¥é½ä¸çï¼æè¿ä¹ä¸æ¡å°±è¶³å¤äºï¼
- å
容管çå交ä»
- ç§»å¨å社交åºç¡è®¾æ½
- ç¨æ·æ°æ®ç®¡ç
- æ°æ®å¹³å°
##å®è£
MongoDB
å
æ¼ç¤ºå¨Ubuntuç³»ç»ä¸çå®è£
è¿ç¨ï¼
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install mongodb-10gen
妿¤å°±å®è£
宿¯ãä¸è¿°å®è£
æµç¨å¯ä»¥åèï¼[Install MongoDB](http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/)
å¦æä½ ç¨çæ¯å
¶å®æä½ç³»ç»ï¼å¯ä»¥å°å®æ¹ç½ç«ä¸è½½å®è£
ç¨åºï¼[http://www.mongodb.org/downloads](http://www.mongodb.org/downloads)ï¼è¯¥ç½ç«è½æ»¡è¶³åç§æä½ç³»ç»ã

妿å¨å®è£
è¿ç¨ä¸éå°äºé®é¢ï¼å»ºè®®å»é®Google大ç¥ï¼å¦ææè¯»è
å¿åçèæè
æ¤æ¤ä¸å¹³ï¼è¯·ä¸è¦åæï¼è¿æ¯æç个人建议ï¼ä¸åæå¯ä»¥ç¥è¿ï¼æå½ç¶ä¹å°é读è
çä¸ªäººéæ©ï¼ã
>æ¨èå ä¸ªèµæï¼ä¾åèï¼
>[windowå¹³å°å®è£
MongoDB](http://www.w3cschool.cc/mongodb/mongodb-window-install.html)
>[NoSQLä¹ãMongoDBãå¦ä¹ ï¼ä¸ï¼ï¼å®è£
说æ](http://www.cnblogs.com/zhoujinyi/archive/2013/06/02/3113868.html)
>[MongoDB ç产ç¯å¢çå®è£
ä¸é
ç½®(Ubuntu)](https://ruby-china.org/topics/454)
>[å¨Ubuntuä¸å®è£
MongoDB](http://blog.fens.me/linux-mongodb-install/)
>[å¨Ubuntuä¸è¿è¡MongoDBå®è£
æ¥éª¤](www.cnblogs.com/alexqdh/archive/2011/11/25/2263626.html)
##å¯å¨
å®è£
宿¯å°±å¯ä»¥å¯å¨æ°æ®åºãå 为æ¬ä¹¦ä¸æ¯ä¸é¨è®²æ°æ®åºï¼æä»¥è¿é䏿¶åæ°æ®åºç详ç»è®²è§£ï¼ä¸é¢åªæ¯å»ºç«ä¸ä¸ªç®åçåºï¼å¹¶ä¸è¯´æMongoDBçåºæ¬è¦ç¹ï¼ç®çå¨äºä¸ºåé¢ç¨Pythonæ¥æä½å®å个éºå«ã
æ§è¡`mongo`å¯å¨shellï¼æ¾ç¤ºç乿¯`>`ï¼æç¹ç±»ä¼¼mysqlçç¶æãå¨shellä¸ï¼å¯ä»¥å®ç°ä¸æ°æ®åºçäº¤äºæä½ã
å¨shellä¸ï¼æä¸ä¸ªå
¨å±åédbï¼ä½¿ç¨åªä¸ªæ°æ®åºï¼é£ä¸ªæ°æ®åºä½ä¸ºå¯¹è±¡è¢«èµç»è¿ä¸ªå
¨å±åédbï¼å¦æé£ä¸ªæ°æ®åºä¸åå¨ï¼å°±ä¼æ°å»ºã
> use mydb
switched to db mydb
> db
mydb
é¤éåè¿ä¸ªæ°æ®åºä¸å¢å å®è´¨æ§çå
容ï¼å¦å宿¯çä¸å°çã
> show dbs;
local 0.03125GB
åè¿ä¸ªæ°æ®åºå¢å ç¹ä¸è¥¿ãMongoDBçåºæ¬åå
æ¯ææ¡£ï¼æè°ææ¡£ï¼å°±ç±»ä¼¼ä¸Pythonä¸çåå
¸ï¼ä»¥âé®/å¼å¯¹âçæ¹å¼ä¿åæ°æ®ã
> book = {"title":"from beginner to master", "author":"qiwsir", "lang":"python"}
{
"title" : "from beginner to master",
"author" : "qiwsir",
"lang" : "python"
}
> db.books.insert(book)
> db.books.find()
{ "_id" : ObjectId("554f0e3cf579bc0767db9edf"), "title" : "from beginner to master", "author" : "qiwsir", "lang" : "python" }
dbæåäºæ°æ®åºmydbï¼booksæ¯è¿ä¸ªæ°æ®åºéé¢çä¸ä¸ªéåï¼ç±»ä¼¼mysqléé¢ç表ï¼ï¼åéåbooksé颿å
¥äºä¸ä¸ªææ¡£ï¼ææ¡£å¯¹åºmysqléé¢çè®°å½ï¼ãâæ°æ®åºãéåãææ¡£âææäºMongoDBæ°æ®åºã
ä»ä¸é¢æä½è¿åç°ä¸ä¸ªæææçå°æ¹ï¼å¹¶æ²¡æç±»ä¼¼createä¹ç±»çå½ä»¤ï¼ç¨å°æ°æ®åºï¼å°±éè¿`use xxx`ï¼å¦æä¸åå¨å°±å»ºç«ï¼ç¨å°éåï¼å°±éè¿`db.xxx`æ¥ä½¿ç¨ï¼å¦ææ²¡æå°±å»ºç«ãå¯ä»¥æ»ç»ä¸ºâéç¨éåé建ç«âãæ¯ä¸æ¯ç®åçæç¹åºäººææã
> show dbs
local 0.03125GB
mydb 0.0625GB
彿äºå
å®å
容ä¹åï¼ä¼çå°åæç¨å°çæ°æ®åºmydbäºã
å¨shellä¸ï¼å¯ä»¥å¯¹æ°æ®è¿è¡âå¢å æ¹æ¥âçæä½ã使¯ï¼æä»¬çç®çæ¯ç¨Pythonæ¥æä½ï¼æä»¥ï¼è¿æ¯æåæ°æ¾å¨åé¢ç¨ã
##å®è£
pymongo
è¦ç¨Pythonæ¥é©±å¨MongoDBï¼å¿
é¡»è¦å®è£
驱卿¨¡åï¼å³pymongoï¼è¿è·æä½mysql类似ãå®è£
æ¹æ³æ¨èå¦ä¸ï¼
$ sudo pip install pymongo
å¦æé¡ºå©ï¼å°±ä¼çå°æåçæç¤ºï¼
Successfully installed pymongo
Cleaning up...
åæ¬ä¹¦çæ¶åï¼å®è£
çæ¬å·å¦ä¸ï¼å¦æè¯»è
ççæ¬ä¸ä¸æ ·ï¼ä¹æ 大ç¢ã
>>> import pymongo
>>> pymongo.version
'3.0.1'
å¦æè¯»è
è¦æå®çæ¬ï¼æ¯å¦å®è£
2.8çæ¬çï¼å¯ä»¥ï¼
$ sudo pip install pymongo==2.8
å®è£
好ä¹åï¼è¿å
¥å°Pythonçäº¤äºæ¨¡å¼ï¼
>>> import pymongo
è¯´ææ¨¡å没æé®é¢ã
##è¿æ¥
æ¢ç¶Python驱å¨MongoDBçæ¨¡åpymongoä¸å·²å®è£
宿¯ï¼æ¥ä¸æ¥å°±æ¯è¿æ¥ï¼å³å»ºç«è¿æ¥å¯¹è±¡ã
>>> pymongo.Connection("localhost",27017)
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'module' object has no attribute 'Connection'
æ¥éï¼æå¨åæ¬ä¹¦ä¹ååé¡¹ç®æ¶ï¼å°±æ¯æç
§ä¸é¢æ¹æ³è¿æ¥çï¼è¯»è
å¯ä»¥æ¥ä¸ä¸ï¼ä¼åç°å¾å¤æç¨æ¯è¿ä¹è¿æ¥çã使¯ï¼ç¼ççå°çå°äºæ¥éã
æä»¥ï¼ä¸å®è¦æ³¨æè¿éçåã
å¦æè¯»è
ç¨çæ¯æ§çæ¬çpymongoï¼æ¯å¦2.8ï¼ä»ç¶å¯ä»¥ä½¿ç¨ä¸é¢çè¿æ¥æ¹æ³ã妿æ¯åæä¸æ ·ï¼æ¯ç¨çæ°çï¼æå®è£
æ¶æ²¡æéçæ¬ï¼ï¼å°±å¾æ³¨æè¿ä¸ªé®é¢äºã
ç»éªä¸»ä¹å®³æ»äººãå¿
é¡»ççä¸é¢æåªäºæ¹æ³å¯ä»¥ç¨ï¼
>>> dir(pymongo)
['ALL', 'ASCENDING', 'CursorType', 'DESCENDING', 'DeleteMany', 'DeleteOne', 'GEO2D', 'GEOHAYSTACK', 'GEOSPHERE', 'HASHED', 'IndexModel', 'InsertOne', 'MAX_SUPPORTED_WIRE_VERSION', 'MIN_SUPPORTED_WIRE_VERSION', 'MongoClient', 'MongoReplicaSetClient', 'OFF', 'ReadPreference', 'ReplaceOne', 'ReturnDocument', 'SLOW_ONLY', 'TEXT', 'UpdateMany', 'UpdateOne', 'WriteConcern', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_cmessage', 'auth', 'bulk', 'client_options', 'collection', 'command_cursor', 'common', 'cursor', 'cursor_manager', 'database', 'errors', 'get_version_string', 'has_c', 'helpers', 'ismaster', 'message', 'mongo_client', 'mongo_replica_set_client', 'monitor', 'monotonic', 'network', 'operations', 'periodic_executor', 'pool', 'read_preferences', 'response', 'results', 'server', 'server_description', 'server_selectors', 'server_type', 'settings', 'son_manipulator', 'ssl_context', 'ssl_support', 'thread_util', 'topology', 'topology_description', 'uri_parser', 'version', 'version_tuple', 'write_concern']
çªå¤§æçé£åæµæµè¿·è«ã叿»¡è¡ä¸ã渴ææåçç¼çï¼éè¿è¿è§éçç»ççï¼æä¹ä¹æ¾ä¸å°`Connection()`è¿ä¸ªæ¹æ³ã忥ï¼ååå®è£
çpymongoï¼âä»åäºâã
ä¸è¿ï¼æåç°äº`MongoClient()`ï¼çä¹å³°å路转ã
>>> client = pymongo.MongoClient("localhost", 27017)
å¾å¥½ãPythonå·²ç»åMongoDB建ç«äºè¿æ¥ã
åæå·²ç»å»ºç«äºä¸ä¸ªæ°æ®åºmydbï¼å¹¶ä¸å¨è¿ä¸ªåºé颿ä¸ä¸ªéåbooksï¼äºæ¯ï¼
>>> db = client.mydb
æè
>>> db = client['mydb']
è·å¾æ°æ®åºmydbï¼å¹¶èµå¼ç»åédbï¼è¿ä¸ªåé䏿¯MongoDBçshellä¸çé£ä¸ªdbï¼æ¤å¤çdbå°±æ¯Pythonä¸ä¸ä¸ªå¯»å¸¸çåéï¼ã
>>> db.collection_names()
[u'system.indexes', u'books']
æ¥çéåï¼åç°äºæä»¬å·²ç»å»ºç«å¥½çé£ä¸ªbooksï¼äºæ¯åè·åè¿ä¸ªéåï¼å¹¶èµå¼ç»ä¸ä¸ªåébooksï¼
>>> books = db["books"]
æè
>>> books = db.books
æ¥ä¸æ¥ï¼å°±å¯ä»¥æä½è¿ä¸ªéåä¸çå
·ä½å
容äºã
###ç¼è¾
ååçbooksæå¼ç¨çæ¯ä¸ä¸ªMongoDBçéå对象ï¼å®å°±è·åé¢å¦ä¹ è¿çå
¶å®å¯¹è±¡ä¸æ ·ï¼æä¸äºæ¹æ³ä¾æä»¬æ¥é©±ä½¿ã
>>> type(books)
>>> dir(books)
['_BaseObject__codec_options', '_BaseObject__read_preference', '_BaseObject__write_concern', '_Collection__create', '_Collection__create_index', '_Collection__database', '_Collection__find_and_modify', '_Collection__full_name', '_Collection__name', '__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattr__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_command', '_count', '_delete', '_insert', '_socket_for_primary_reads', '_socket_for_reads', '_socket_for_writes', '_update', 'aggregate', 'bulk_write', 'codec_options', 'count', 'create_index', 'create_indexes', 'database', 'delete_many', 'delete_one', 'distinct', 'drop', 'drop_index', 'drop_indexes', 'ensure_index', 'find', 'find_and_modify', 'find_one', 'find_one_and_delete', 'find_one_and_replace', 'find_one_and_update', 'full_name', 'group', 'index_information', 'initialize_ordered_bulk_op', 'initialize_unordered_bulk_op', 'inline_map_reduce', 'insert', 'insert_many', 'insert_one', 'list_indexes', 'map_reduce', 'name', 'next', 'options', 'parallel_scan', 'read_preference', 'reindex', 'remove', 'rename', 'replace_one', 'save', 'update', 'update_many', 'update_one', 'with_options', 'write_concern']
è¿ä¹å¤æ¹æ³ä¸ä¼ä¸ä¸ä»ç»ï¼åªæ¯æç
§âå¢å æ¹æ¥âç常ç¨åè½ä»ç»å ç§ã读è
å¯ä»¥ä½¿ç¨`help()`廿¥çæ¯ä¸ç§æ¹æ³ç使ç¨è¯´æã
>>> books.find_one()
{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
æé读è
注æçæ¯ï¼MongoDBçshellä¸çå½ä»¤ä¸pymongoä¸çæ¹æ³ææ¶åä¼ç¨æå·®å«ï¼å¡å¿
å°å¿ãæ¯å¦åæè¿ä¸ªï¼å¨shell䏿¯è¿æ ·åçï¼
> db.books.findOne()
{
"_id" : ObjectId("554f0e3cf579bc0767db9edf"),
"title" : "from beginner to master",
"author" : "qiwsir",
"lang" : "python"
}
请注æåºåã
ç®åå¨éåbooksä¸ï¼æä¸ä¸ªææ¡£ï¼è¿æ³åå¢å ï¼äºæ¯å°±è¿å
¥å°äºâå¢å æ¹æ¥âçå¸¸è§æä½ã
**æ°å¢åæ¥è¯¢**
>>> b2 = {"title":"physics", "author":"Newton", "lang":"english"}
>>> books.insert(b2)
ObjectId('554f28f465db941152e6df8b')
æåå°åéåä¸å¢å äºä¸ä¸ªææ¡£ãå¾ççç»æï¼æä»¬å°±æ¯å
满好å¥å¿çå°å©åï¼æè®°å¾å¥³å¿å°æ¶åï¼æ¯æ¬¡ç»å¥¹ç
§ç¸ï¼æ¯æäºä¸å¼ ï¼å¥¹æ»è¦çä¸çãç°å¨æä»¬ä¼¼ä¹ä¹æ¯è¿æ ·ï¼å¦æä¸ççï¼æ»è§å¾ä¸æ¾å¿ï¼ï¼ççå°±æ¯ä¸ç§æ¥è¯¢ã
>>> books.find().count()
2
è¿æ¯æ¥çå½åéåæå¤å°ä¸ªææ¡£çæ¹å¼ï¼è¿åå¼ä¸º2ï¼å说ææä¸¤æ¡ææ¡£äºãè¿æ¯è¦ççå
容ã
>>> books.find_one()
{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
è¿ä¸ªå½ä»¤å°±ä¸è¡äºï¼å 为å®åªè¿åç¬¬ä¸æ¡ãå¿
é¡»è¦ï¼
>>> for i in books.find():
... print i #Python 3: print(i)
...
{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}
å¨bookså¼ç¨çå¯¹è±¡ä¸æ`find()`æ¹æ³ï¼å®è¿åçæ¯ä¸ä¸ªå¯è¿ä»£å¯¹è±¡ï¼å
å«çéå䏿æçææ¡£ã
ç±äºææ¡£æ¯âé®/å¼â对ï¼ä¸ä¸å®æ¯æ¡ææ¡£é½è¦ç»æä¸æ ·ï¼æ¯å¦ï¼ä¹å¯ä»¥å¨éå䏿å
¥è¿æ ·çææ¡£ã
>>> books.insert({"name":"Hertz"})
ObjectId('554f2b4565db941152e6df8c')
>>> for i in books.find():
... print i
...
{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}
{u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz'}
妿æå¤ä¸ªææ¡£ï¼æ³ä¸ä¸åæå
¥å°éåä¸ï¼å¨MySQLä¸ï¼å¯ä»¥å®ç°å¤æ¡æ°æ®ç¨ä¸æ¡å½ä»¤æå
¥å°è¡¨éé¢ï¼ï¼å¯ä»¥è¿ä¹åï¼
>>> n1 = {"title":"java", "name":"Bush"}
>>> n2 = {"title":"fortran", "name":"John Warner Backus"}
>>> n3 = {"title":"lisp", "name":"John McCarthy"}
>>> n = [n1, n2, n3]
>>> n
[{'name': 'Bush', 'title': 'java'}, {'name': 'John Warner Backus', 'title': 'fortran'}, {'name': 'John McCarthy', 'title': 'lisp'}]
>>> books.insert(n)
[ObjectId('554f30be65db941152e6df8d'), ObjectId('554f30be65db941152e6df8e'), ObjectId('554f30be65db941152e6df8f')]
è¿æ ·å°±å®æäºæè°çæ¹éæå
¥ï¼æ¥çä¸ä¸ææ¡£æ¡æ°ï¼
>>> books.find().count()
6
æé读è
ï¼æ¹éæå
¥çææ¡£å¤§å°æ¯æéå¶çï¼æäººè¯´ä¸è¦è¶
è¿20䏿¡ï¼æäººè¯´ä¸è¦è¶
è¿16MBï¼ææ²¡ææµè¯è¿ãå¨ä¸è¬æ
åµä¸ï¼æè®¸è¾¾ä¸å°ä¸éï¼å¦æéå°æç«¯æ
åµï¼å°±è¯·è¯»è
å¨ä½¿ç¨æ¶å¤æ³¨æäºã
å¦æè¦æ¥è¯¢ï¼é¤äºéè¿å¾ªç¯ä¹å¤ï¼è½ä¸è½æç
§æä¸ªæ¡ä»¶æ¥å¢ï¼æ¯å¦æ¥æ¾`'name'='Bush'`çææ¡£ï¼
>>> books.find_one({"name":"Bush"})
{u'_id': ObjectId('554f30be65db941152e6df8d'), u'name': u'Bush', u'title': u'java'}
å¯¹äºæ¥è¯¢ç»æï¼è¿å¯ä»¥è¿è¡æåºï¼
>>> for i in books.find().sort("title", pymongo.ASCENDING):
... print i #Python 3: print(i)
...
{u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz'}
{u'_id': ObjectId('554f30be65db941152e6df8e'), u'name': u'John Warner Backus', u'title': u'fortran'}
{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
{u'_id': ObjectId('554f30be65db941152e6df8d'), u'name': u'Bush', u'title': u'java'}
{u'_id': ObjectId('554f30be65db941152e6df8f'), u'name': u'John McCarthy', u'title': u'lisp'}
{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}
è¿æ¯æç
§"title"çå¼çååºæåçï¼æ³¨æ`sort()`ä¸ç第äºä¸ªåæ°ï¼æææ¯ååºæåã妿æç
§éåºï¼å°±éè¦å°åæ°ä¿®æ¹ä¸º`pymongo.DESCEDING`ï¼ä¹å¯ä»¥æå®å¤ä¸ªæåºé®ã
>>> for i in books.find().sort([("name",pymongo.ASCENDING),("name",pymongo.DESCENDING)]):
... print i #Python 3: print(i)
...
{u'_id': ObjectId('554f30be65db941152e6df8e'), u'name': u'John Warner Backus', u'title': u'fortran'}
{u'_id': ObjectId('554f30be65db941152e6df8f'), u'name': u'John McCarthy', u'title': u'lisp'}
{u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz'}
{u'_id': ObjectId('554f30be65db941152e6df8d'), u'name': u'Bush', u'title': u'java'}
{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}
å¦æè¯»è
çå°è¿éï¼è¯·å¡å¿
注æï¼MongoDBä¸çæ¯ä¸ªææ¡£ï¼æ¬è´¨ä¸é½æ¯âé®/å¼â对çç±»åå
¸ç»æãè¿ç§ç»æï¼ä¸ç»Pythonè¯»åºæ¥ï¼å°±å¯ä»¥ç¨åå
¸ä¸çåç§æ¹æ³æ¥æä½ã䏿¤ç±»ä¼¼çè¿æä¸ä¸ªå为JSONçä¸è¥¿ï¼ä½æ¯ï¼å¦æç¨Pythonè¯»è¿æ¥ä¹åï¼æ æ³ç´æ¥ç¨JSONä¸ç`json.dumps()`æ¹æ³æä½ææ¡£ãå
¶ä¸ä¸ç§è§£å³æ¹æ³å°±æ¯å°ææ¡£ä¸ç`'_id'`âé®/å¼â对å é¤ï¼ä¾å¦ï¼`del doc['_id']`ï¼ï¼ç¶å使ç¨`json.dumps()`å³å¯ã读è
ä¹å¯æ¯ä½¿ç¨`json_util`模åï¼å ä¸ºå®æ¯âTools for using Pythonâs json module with BSON documentsâï¼è¯·é
读[http://api.mongodb.org/python/current/api/bson/json_util.html](http://api.mongodb.org/python/current/api/bson/json_util.html)ä¸ç模å使ç¨è¯´æã
**æ´æ°**
对äºå·²ææ°æ®ï¼æ´æ°æ¯æ°æ®åºä¸å¸¸ç¨çæä½ãæ¯å¦ï¼è¦æ´æ°name为Hertzé£ä¸ªææ¡£ï¼
>>> books.update({"name":"Hertz"}, {"$set": {"title":"new physics", "author":"Hertz"}})
{u'updatedExisting': True, u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}
>>> books.find_one({"author":"Hertz"})
{u'title': u'new physics', u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz', u'author': u'Hertz'}
卿´æ°çæ¶åï¼ç¨äºä¸ä¸ª`$set`ä¿®æ¹å¨ï¼å®å¯ä»¥ç¨æ¥æå®é®å¼ï¼å¦æé®ä¸åå¨ï¼å°±ä¼å建ã
å
³äºä¿®æ¹å¨ï¼ä¸ä»
ä»
æ¯è¿ä¸ä¸ªï¼è¿æå«çå¢ã
|ä¿®æ¹å¨|æè¿°|
|----|----|
|$set|ç¨æ¥æå®ä¸ä¸ªé®çå¼ã妿ä¸åå¨åå建å®|
|$unset|å®å
¨å é¤æä¸ªé®|
|$inc|å¢å å·²æé®çå¼ï¼ä¸åå¨åå建ï¼åªè½ç¨äºå¢å æ´æ°ãé¿æ´æ°ãåç²¾åº¦æµ®ç¹æ°ï¼
|$push|æ°ç»ä¿®æ¹å¨åªè½æä½å¼ä¸ºæ°ç»ï¼åå¨keyå¨å¼æ«å°¾å¢å ä¸ä¸ªå
ç´ ï¼ä¸åå¨åå建ä¸ä¸ªæ°ç»|
**å é¤**
å é¤å¯ä»¥ç¨`remove()`æ¹æ³ï¼ç¨ä¸æ¼ç¤ºï¼è¯»è
å¿
ä¼ã
>>> books.remove({"name":"Bush"})
{u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}
>>> books.find_one({"name":"Bush"})
>>>
è¿æ¯å°é£ä¸ªææ¡£å
¨é¨å é¤ãå½ç¶ï¼ä¹å¯ä»¥æ ¹æ®MongoDBçè¯æ³è§åå个æ¡ä»¶ï¼æç
§æ¡ä»¶å é¤ã
**ç´¢å¼**
ç´¢å¼çç®çæ¯ä¸ºäºè®©æ¥è¯¢é度æ´å¿«ï¼å½ç¶ï¼å¨å
·ä½ç项ç®å¼åä¸ï¼æ¯å¦å»ºç«ç´¢å¼è¦è§æ
åµè宿¯å¦å»ºç«ç´¢å¼ãå 为建ç«ç´¢å¼ä¹æ¯æä»£ä»·çã
>>> books.create_index([("title", pymongo.DESCENDING),])
u'title_-1'
è¿éä»
ä»
æ¯å¯¹pymongo模ååäºä¸ä¸ªé常ç®åçä»ç»ï¼å¨å®é
使ç¨è¿ç¨ä¸ï¼ä¸é¢ç¥è¯æ¯å¾æéçï¼æä»¥éè¦è¯»è
æ ¹æ®å
·ä½åºç¨åºæ¯åç»åMongoDBçæå
³ç¥è¯å»å°è¯æ°çè¯å¥ã
------
[æ»ç®å½](./index.md) | [ä¸èï¼mysqlæ°æ®åº(2)](./231.md) | [ä¸èï¼sqliteæ°æ®åº](./233.md)
å¦æä½ è®¤ä¸ºæå¿
è¦æèµæï¼è¯·éè¿æ¯ä»å®ï¼**[email protected]**,ä¸èææ¿ã