MongoDBPython驱动-创新互联

使用pip install pymongo安装

公司主营业务:成都网站建设、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出崇信免费做网站回馈大家。

1.连接MongoDB实例

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

两种写法都行

2.获取数据库信息

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

两种写法都行

3.获取集合信息

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

两种写法都行

4.插入一个文档记录

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

In [95]: import datetime In [96]: post={"author":"Mike","text":"My first blog post!","tags":["mongodb","python","pymongo"],"date":datetime.datetime.utcnow()}In [132]: posts=db.posts In [133]: post_id=posts.insert(post) In [134]: post_id Out[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'My first blog post!'} 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'My first blog post!'} In [143]: posts.find_one({"author":"Eliot"}) In [144]:

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

6.使用ObjectID查找文档

In [151]: post_id Out[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'My first blog post!'}

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": "Another post!",              
                  "tags": ["bulk", "insert"],           
                  "date": datetime.datetime(2009, 11, 12, 11, 14)},          
                 {"author": "Eliot",              
                  "title": "MongoDB is fun",              
                  "text": "and pretty easy too!",               
                  "date": datetime.datetime(2009, 11, 10, 10, 45)}]
 >>> posts.insert(new_posts)[ObjectId('...'), ObjectId('...')]

8.查询多个文档数据

In [165]: for post in posts.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'My first blog post!'} Out[166]:  {u'_id': ObjectId('550b87d47a50907021e3473b'),  u'author': u'Mike',  u'date': datetime.datetime(2009, 11, 12, 11, 14),  u'text': u'Another post!'} Out[166]:  {u'_id': ObjectId('550b87d47a50907021e3473c'),  u'author': u'Eliot',  u'title': u'MongoDB is fun'}In [169]: for post in posts.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'My first blog post!'} Out[169]:  {u'_id': ObjectId('550b87d47a50907021e3473b'),  u'author': u'Mike',  u'date': datetime.datetime(2009, 11, 12, 11, 14),  u'text': u'Another post!'}

9.总计

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

10.范围查询

In [183]: d=datetime.datetime(2009,11,12,12) In [184]: for post in posts.find({"date":{"$lt":d}}).sort("author"):    .....:     print post    .....:         .....:      {u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', 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]: from pymongo import ASCENDING,DESCENDING In [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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:MongoDBPython驱动-创新互联
文章位置:http://pwwzsj.com/article/diegjg.html