使用pip install pymongo安装

1.连接MongoDB实例

In[60]:frompymongoimportMongoClientIn[61]:client=MongoClient('mongodb://10.10.41.25:2911')In[62]:client=MongoClient('10.10.41.25',2911)

两种写法都行


2.获取数据库信息

In[63]:db=client.gameIn[64]:db=client['game']

两种写法都行


3.获取集合信息

In[85]:collection=db.playerIn[86]:collection=db['player']

两种写法都行


4.插入一个文档记录

MongoDB以JSON格式存储和显示数据。在pymongo中以字典的方式显示数据。

In[95]:importdatetimeIn[96]:post={"author":"Mike","text":"Myfirstblogpost!","tags":["mongodb","python","pymongo"],"date":datetime.datetime.utcnow()}

In[132]:posts=db.postsIn[133]:post_id=posts.insert(post)In[134]:post_idOut[134]:ObjectId('550ad8677a50900165feae9d')


当插入一个文档时,一个特殊的key,"_id"将自动添加到这个文档中。

In[136]:db.collection_names()Out[136]:[u'system.indexes',u'posts']


5.使用find_one()获取单个文档

In[141]:posts.find_one()Out[141]:{u'_id':ObjectId('550ad8677a50900165feae9d'),u'author':u'Mike',u'date':datetime.datetime(2015,3,19,14,7,14,572000),u'tags':[u'mongodb',u'python',u'pymongo'],u'text':u'Myfirstblogpost!'}In[142]:posts.find_one({"author":"Mike"})Out[142]:{u'_id':ObjectId('550ad8677a50900165feae9d'),u'author':u'Mike',u'date':datetime.datetime(2015,3,19,14,7,14,572000),u'tags':[u'mongodb',u'python',u'pymongo'],u'text':u'Myfirstblogpost!'}In[143]:posts.find_one({"author":"Eliot"})In[144]:


MongoDB以BSON格式存储字符,而BSON字符串是以UTF-8编码,所以PyMongo必须要确保它存储的数据是有效的UTF-8编码的数据。常规字符串直接存储,但是经过编码的字符串首先以UTF-8编码存储。




6.使用ObjectID查找文档

In[151]:post_idOut[151]:ObjectId('550ad8677a50900165feae9d')In[152]:posts.find_one({"_id":post_id})Out[152]:{u'_id':ObjectId('550ad8677a50900165feae9d'),u'author':u'Mike',u'date':datetime.datetime(2015,3,19,14,7,14,572000),u'tags':[u'mongodb',u'python',u'pymongo'],u'text':u'Myfirstblogpost!'}

ObjectID和它表示的字符串不一样

In[154]:post_id_as_str=str(post_id)In[155]:posts.find_one({"_id":post_id_as_str})

没有任何结果显示


在一些WEB应用中,需要更加URL获取post_id进而根据post_id查找匹配的文档。在使用find_one()查找之前有必要将post_id从字符串转换成为ObjectID



7.批量插入文档数据

>>>new_posts=[{"author":"Mike",..."text":"Anotherpost!","tags":["bulk","insert"],"date":datetime.datetime(2009,11,12,11,14)},{"author":"Eliot","title":"MongoDBisfun","text":"andprettyeasytoo!","date":datetime.datetime(2009,11,10,10,45)}]>>>posts.insert(new_posts)[ObjectId('...'),ObjectId('...')]


8.查询多个文档数据

In[165]:forpostinposts.find():post.....:.....:Out[166]:{u'_id':ObjectId('550ad8677a50900165feae9d'),u'author':u'Mike',u'date':datetime.datetime(2015,3,19,14,7,14,572000),u'tags':[u'mongodb',u'python',u'pymongo'],u'text':u'Myfirstblogpost!'}Out[166]:{u'_id':ObjectId('550b87d47a50907021e3473b'),u'author':u'Mike',u'date':datetime.datetime(2009,11,12,11,14),u'text':u'Anotherpost!'}Out[166]:{u'_id':ObjectId('550b87d47a50907021e3473c'),u'author':u'Eliot',u'title':u'MongoDBisfun'}

In[169]:forpostinposts.find({"author":"Mike"}):.....:post.....:.....:Out[169]:{u'_id':ObjectId('550ad8677a50900165feae9d'),u'author':u'Mike',u'date':datetime.datetime(2015,3,19,14,7,14,572000),u'tags':[u'mongodb',u'python',u'pymongo'],u'text':u'Myfirstblogpost!'}Out[169]:{u'_id':ObjectId('550b87d47a50907021e3473b'),u'author':u'Mike',u'date':datetime.datetime(2009,11,12,11,14),u'text':u'Anotherpost!'}


9.总计

In[170]:posts.count()Out[170]:3In[171]:posts.find({"author":"Mike"}).count()Out[171]:2


10.范围查询

In[183]:d=datetime.datetime(2009,11,12,12)In[184]:forpostinposts.find({"date":{"$lt":d}}).sort("author"):.....:printpost.....:.....:{u'date':datetime.datetime(2009,11,12,11,14),u'text':u'Anotherpost!',u'_id':ObjectId('550b87d47a50907021e3473b'),u'author':u'Mike'}


11.索引

使用索引可以加快查询速度,缩小查询范围。

In[201]:posts.find({"date":{"$lt":d}}).sort("author").explain()["cursor"]Out[201]:u'BasicCursor'In[202]:posts.find({"date":{"$lt":d}}).sort("author").explain()["nscanned"]Out[202]:3


创建组合索引

In[241]:frompymongoimportASCENDING,DESCENDINGIn[242]:posts.create_index([("date",DESCENDING),("author",ASCENDING)])Out[242]:u'date_-1_author_1'In[243]:posts.find({"date":{"$lt":d}}).sort("author").explain()["nscanned"]Out[243]:1



12.



参考文档

http://api.mongodb.org/python/current/tutorial.html?_ga=1.58141740.722641156.1410499072