亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5823 | 回復: 3
打印 上一主題 下一主題

[MongoDB] Python調用MongoDB使用心得 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-02-23 18:56 |只看該作者 |倒序瀏覽
Python調用MongoDB使用心得





本文是一個Python 使用MongoDB的簡單教程,將使用pymongo對MongoDB進行的各種操作進行了簡單的匯總,NoSQLFan進行了簡單整理,使用Python的同學可以看一看。

下載相應平臺的版本,解壓即可。為方便使用,將bin路徑添加到系統(tǒng)path環(huán)境變量里。其中mongod是服務器,mongo是客戶shell,然后創(chuàng)建數(shù)據(jù)文件目錄:在c盤下創(chuàng)建data文件夾,里面創(chuàng)建db文件夾。

基本使用:



安裝對應語言的Driver,Python 安裝 pymongo

$ easy_install pymongo使用方法總結,摘自官方教程

創(chuàng)建連接

>>> import pymongo
>>> connection=pymongo.Connection('localhost',27017)切換數(shù)據(jù)庫

>>> db = connection.test_database獲取collection

>>> collection = db.test_collectiondb和collection都是延時創(chuàng)建的,在添加Document時才真正創(chuàng)建

文檔添加,_id自動創(chuàng)建

>>> import datetime
>>> post = {"author": "Mike",
...         "text": "My first blog post!",
...         "tags": ["mongodb", "python", "pymongo"],
...         "date": datetime.datetime.utcnow()}
>>> posts = db.posts
>>> posts.insert(post)
ObjectId('...')批量插入

>>> 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('...')]獲取所有collection(相當于SQL的show tables)

>>> db.collection_names()
[u'posts', u'system.indexes']獲取單個文檔

>>> posts.find_one()
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}查詢多個文檔

>> for post in posts.find():
...   post
...
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
{u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'bulk', u'insert']}
{u'date': datetime.datetime(2009, 11, 10, 10, 45), u'text': u'and pretty easy too!', u'_id': ObjectId('...'), u'author': u'Eliot', u'title': u'MongoDB is fun'}加條件的查詢

>>> posts.find_one({"author": "Mike"})高級查詢

>>> posts.find({"date": {"$lt": d}}).sort("author")統(tǒng)計數(shù)量

>>> posts.count()
3加索引

>>> from pymongo import ASCENDING, DESCENDING
>>> posts.create_index([("date", DESCENDING), ("author", ASCENDING)])
u'date_-1_author_1'查看查詢語句的性能

>>> posts.find({"date": {"$lt": d}}).sort("author").explain()["cursor"]
u'BtreeCursor date_-1_author_1'
>>> posts.find({"date": {"$lt": d}}).sort("author").explain()["nscanned"]
2附自己總結的一點小心得,僅供參考

缺點

不是全盤取代傳統(tǒng)數(shù)據(jù)庫(NoSQLFan:是否能取代需要看應用場景)
不支持復雜事務(NoSQLFan:MongoDB只支持對單個文檔的原子操作)
文檔中的整個樹,不易搜索,4MB限制?(NoSQLFan:1.8版本已經(jīng)修改為16M)
特點(NoSQLFan:作者在這里列舉的很多只是一些表層的特點):

文檔型數(shù)據(jù)庫,表結構可以內嵌
沒有模式,避免空字段開銷(Schema Free)
分布式支持
查詢支持正則
動態(tài)擴展架構
32位的版本最多只能存儲2.5GB的數(shù)據(jù)(NoSQLFan:最大文件尺寸為2G,生產環(huán)境推薦64位)
名詞對應

一個數(shù)據(jù)項叫做 Document(NoSQLFan:對應MySQL中的單條記錄)
一個文檔嵌入另一個文檔(comment 嵌入 post)叫做 Embed
儲存一系列文檔的地方叫做 Collections(NoSQLFan:對應MySQL中的表)
表間關聯(lián),叫做 Reference

論壇徽章:
0
2 [報告]
發(fā)表于 2012-02-24 17:07 |只看該作者
謝謝分享

論壇徽章:
1
天蝎座
日期:2013-12-06 18:23:58
3 [報告]
發(fā)表于 2012-03-31 14:06 |只看該作者
分享的不錯

論壇徽章:
0
4 [報告]
發(fā)表于 2012-04-01 01:48 |只看該作者
沒什么事的時候表找我,有事的時候更表找我。

頂,是一種義務  










signature..................................
仙府之緣
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP