亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python的MongoDB模塊PyMongo操作方法集錦

2020-01-04 17:52:13
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python的MongoDB模塊PyMongo操作方法集錦,包括數據的增刪查改以及索引等相關的基本操作,需要的朋友可以參考下
 

開始之前當然要導入模塊啦:

>>> import pymongo

下一步,必須本地mongodb服務器的安裝和啟動已經完成,才能繼續下去。

建立于MongoClient 的連接:

client = MongoClient('localhost', 27017)# 或者client = MongoClient('mongodb://localhost:27017/')

得到數據庫:

>>> db = client.test_database# 或者>>> db = client['test-database']

得到一個數據集合:

collection = db.test_collection# 或者collection = db['test-collection']

MongoDB中的數據使用的是類似Json風格的文檔:

>>> import datetime>>> post = {"author": "Mike",...     "text": "My first blog post!",...     "tags": ["mongodb", "python", "pymongo"],...     "date": datetime.datetime.utcnow()}

插入一個文檔:

>>> posts = db.posts>>> post_id = posts.insert_one(post).inserted_id>>> post_idObjectId('...')

找一條數據:

>>> 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']}>>> posts.find_one({"author": "Mike"}){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']}>>> posts.find_one({"author": "Eliot"})>>>

通過ObjectId來查找:

>>> post_idObjectId(...)>>> posts.find_one({"_id": post_id}){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']}

不要轉化ObjectId的類型為String:

>>> post_id_as_str = str(post_id)>>> posts.find_one({"_id": post_id_as_str}) # No result>>>

如果你有一個post_id字符串,怎么辦呢?

from bson.objectid import ObjectId# The web framework gets post_id from the URL and passes it as a stringdef get(post_id):  # Convert from string to ObjectId:  document = client.db.collection.find_one({'_id': ObjectId(post_id)})

多條插入:

>>> 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)}]>>> result = posts.insert_many(new_posts)>>> result.inserted_ids[ObjectId('...'), ObjectId('...')]

查找多條數據:

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

當然也可以約束查找條件:

>>> for post in posts.find({"author": "Mike"}):...  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']}

獲取集合的數據條數:

>>> posts.count()

或者說滿足某種查找條件的數據條數:

>>> posts.find({"author": "Mike"}).count()

范圍查找,比如說時間范圍:

>>> d = datetime.datetime(2009, 11, 12, 12)>>> for post in posts.find({"date": {"$lt": d}}).sort("author"):...  print post...{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'}{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']}

$lt是小于的意思。

如何建立索引呢?比如說下面這個查找:

>>> posts.find({"date": {"$lt": d}}).sort("author").explain()["cursor"]u'BasicCursor'>>> posts.find({"date": {"$lt": d}}).sort("author").explain()["nscanned"]

建立索引:

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

連接聚集

>>> account = db.Account#或 >>> account = db["Account"]

 

查看全部聚集名稱

>>> db.collection_names()

 

查看聚集的一條記錄

>>> db.Account.find_one() >>> db.Account.find_one({"UserName":"keyword"})

 

查看聚集的字段

>>> db.Account.find_one({},{"UserName":1,"Email":1}){u'UserName': u'libing', u'_id': ObjectId('4ded95c3b7780a774a099b7c'), u'Email': u'libing@35.cn'} >>> db.Account.find_one({},{"UserName":1,"Email":1,"_id":0}){u'UserName': u'libing', u'Email': u'libing@35.cn'}

 

查看聚集的多條記錄

>>> for item in db.Account.find():    item >>> for item in db.Account.find({"UserName":"libing"}):    item["UserName"]

 

查看聚集的記錄統計

>>> db.Account.find().count() >>> db.Account.find({"UserName":"keyword"}).count()

 

聚集查詢結果排序

>>> db.Account.find().sort("UserName") #默認為升序>>> db.Account.find().sort("UserName",pymongo.ASCENDING)  #升序>>> db.Account.find().sort("UserName",pymongo.DESCENDING) #降序

 

聚集查詢結果多列排序

>>> db.Account.find().sort([("UserName",pymongo.ASCENDING),("Email",pymongo.DESCENDING)])

 

添加記錄

>>> db.Account.insert({"AccountID":21,"UserName":"libing"})

 

修改記錄

>>> db.Account.update({"UserName":"libing"},{"$set":{"Email":"libing@126.com","Password":"123"}})

 

刪除記錄

>>> db.Account.remove()  -- 全部刪除 >>> db.Test.remove({"UserName":"keyword"})
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频精品久久久| 这里只有精品久久| 国产成人久久久精品一区| 久久久久久欧美| 日韩国产精品一区| 成人精品视频久久久久| 日韩亚洲国产中文字幕| 国产精品人成电影在线观看| 精品中文视频在线| 亚洲激情自拍图| 欧美日韩在线视频一区二区| 欧美成人精品一区二区三区| 亚洲欧洲视频在线| 日韩少妇与小伙激情| 日韩专区在线观看| 国产午夜精品视频免费不卡69堂| 国产综合色香蕉精品| 欧美午夜影院在线视频| 亚洲国产日韩欧美在线99| 久久亚洲一区二区三区四区五区高| 欧美成人一二三| 一个人www欧美| 午夜剧场成人观在线视频免费观看| 亚洲国产精品久久精品怡红院| 欧美综合一区第一页| 亚洲色图第三页| 精品日本美女福利在线观看| 奇米成人av国产一区二区三区| 亚洲视频在线视频| 亚洲精品久久久久久久久久久久久| 精品国产一区二区三区久久狼黑人| 久久视频在线观看免费| 欧美高清视频一区二区| 色偷偷噜噜噜亚洲男人| 欧美疯狂xxxx大交乱88av| 精品久久久中文| 国产偷国产偷亚洲清高网站| 欧美一级bbbbb性bbbb喷潮片| 国产精品福利片| 伦理中文字幕亚洲| 亚洲精品suv精品一区二区| 久久黄色av网站| 日本精品久久久久影院| 深夜福利日韩在线看| 国产精品青草久久久久福利99| 91国产视频在线| 精品人伦一区二区三区蜜桃网站| 狠狠躁夜夜躁人人爽超碰91| 国产拍精品一二三| 亚洲精品国产精品自产a区红杏吧| 国外成人在线视频| 欧美激情小视频| 亚洲男人天天操| 91国产美女在线观看| 亚洲国产成人一区| 亚洲美女av网站| 亚洲人高潮女人毛茸茸| 日本不卡高字幕在线2019| 中文字幕日韩欧美精品在线观看| 日韩在线观看网站| 欧美日韩视频免费播放| 国产一区二区三区三区在线观看| 国内精品一区二区三区| 欧美国产乱视频| 国模极品一区二区三区| 日韩精品免费在线| 色香阁99久久精品久久久| 国产精品无av码在线观看| 国产成人精品一区二区| 久久精品国产99国产精品澳门| 欧美激情精品久久久久久| 欧美激情小视频| 久久久噜噜噜久久中文字免| 欧美国产在线电影| 91亚洲国产成人久久精品网站| 亚洲精品www久久久久久广东| 国产精品精品视频一区二区三区| 欧美精品免费在线观看| 亚洲电影天堂av| 久久久精品一区| 欧美日韩在线免费| 亚洲欧美日韩在线高清直播| 久久影院资源网| 亚洲国内精品在线| 色偷偷av一区二区三区| 亚洲福利视频二区| 久久国产精品99国产精| 国内精品视频久久| 国产成人啪精品视频免费网| 欧美亚洲另类激情另类| 美女久久久久久久久久久| 国产精品老牛影院在线观看| 久久久天堂国产精品女人| 91久久夜色精品国产网站| 成人黄色中文字幕| 欧美孕妇孕交黑巨大网站| 日韩第一页在线| 国产日产欧美精品| 久久免费视频这里只有精品| 热门国产精品亚洲第一区在线| 国产精品成人va在线观看| 亚洲另类欧美自拍| 国产成人精品在线视频| 日本欧美一二三区| 18性欧美xxxⅹ性满足| 26uuu久久噜噜噜噜| 久久国产精品免费视频| 亚洲第一网站免费视频| 在线观看日韩av| 欧洲成人午夜免费大片| 国产精品男女猛烈高潮激情| 91精品国产91久久久| 在线亚洲午夜片av大片| 亚洲午夜精品久久久久久久久久久久| 91免费精品国偷自产在线| 亚洲毛片一区二区| 国产精品爽黄69天堂a| 亚洲综合第一页| www.欧美三级电影.com| 美女扒开尿口让男人操亚洲视频网站| 国产一区视频在线| 国产又爽又黄的激情精品视频| 亚洲春色另类小说| 日韩中文在线中文网三级| 亚洲国产成人精品女人久久久| 日韩欧美有码在线| 亚洲成人1234| 亚洲精品网站在线播放gif| 久久乐国产精品| 亚洲欧美日韩天堂一区二区| 久久久久成人精品| 国产91精品在线播放| 欧美一级高清免费| 中文字幕欧美日韩在线| 91成人免费观看网站| 久久久久久噜噜噜久久久精品| 日韩电影第一页| 日韩一级黄色av| 日韩精品免费在线视频| 97成人在线视频| 91成人在线观看国产| 精品国产一区久久久| 亚洲第一视频在线观看| 26uuu另类亚洲欧美日本老年| 日韩经典中文字幕在线观看| 国产精品99久久久久久久久| 亚洲国产成人久久综合| 欧美精品在线观看| 国产亚洲欧洲高清| 91精品在线播放| 国产女同一区二区| 日韩久久精品电影| 亚洲大胆人体视频| 亚洲一区二区自拍| 日韩大片在线观看视频| 亚洲精选一区二区| 国产精品99久久久久久www| 26uuu国产精品视频| 日韩视频免费大全中文字幕| 国产91精品高潮白浆喷水| 日韩精品在线观看一区二区| 色老头一区二区三区| 国产精品一区二区三区在线播放| 久久久久国产精品免费网站|