Pymongo庫簡單應用
Pymongo庫是Python操作mongodb的庫。下面簡單介紹Pymongo的簡單使用。 建立mongo用戶端選擇資料庫和集合并插入資料
import pymongoclient = pymongo.MongoClient(host,port)#client = pymongo.MongoClient('mongodb://localhost:27017/')db = client.db #選擇名稱叫db的資料庫,沒有會建立#或者db = client['db']collection = db.test #選擇test名的collection,沒有會建立#或者collection = db['test']#collection 可以對集合進行操作collection.insert({'name':'aaa'}} #返回插入idcollection.insert([{'name':'aaa'},{'name':'bbb'}])#返回插入id的liste = collection.insert_one({'name':'ccc'})#返回結果通過e.inserted_id查看插入idobj = {'a':'b'}collection.insert_one(obj)#插入成功後obj會多一個屬性_idprint(obj) #{'_id': ObjectId('58cf7eaac43b3761209924be'), 'a': 'b'}#insert也會產生相同的效果,會把插入的元素多添加一個_id屬性來表示插入資料庫後的id
串連帶認證的mongo
上述串連可以串連不設定密碼的mongo,但是mongo帶密碼就需要其他的串連方式了。
#SCRAM-SHA-1方式uri = "mongodb://user:password@example.com/the_database?authMechanism=SCRAM-SHA-1"client = MongoClient(uri)#或者client = MongoClient('example.com')client.the_database.authenticate('user', 'password', mechanism='SCRAM-SHA-1')#MONGODB-CR 方式from pymongo import MongoClienturi = "mongodb://user:password@example.com/the_database?authMechanism=MONGODB-CR"client = MongoClient(uri)#或者client = MongoClient('example.com')client.the_database.authenticate('user', 'password', mechanism='MONGODB-CR')#或者使用預設加密方式uri = "mongodb://user:password@example.com/the_database"client = MongoClient(uri)
查詢資料
a = collection.find({'name':'aaa'}) #返回遊標,可以for迭代或者a.next()擷取a = collection.find_one({'name':'aaa'})#返回結果'''{'_id':ObjectId('58b92cdfc43b3735664597be'), 'name':'aaa'}'''#如果id是字串類型的from bson.objectid import ObjectId #匯入ObjectId把字串id轉換成ObjectId才能尋找collection.find_one({'_id':ObjectId('58b93904c43b3735664597c2')})#直接使用字串id是無法查詢到內容的#查看資料條數collection.count()#或者 collection.find().count()collection.find({"name": "aaa"}).count()#條件查詢和排序d = datetime.datetime(2009, 11, 12, 12)collection.find({"date": {"$lt": d}}).sort("author")#限制查詢條數和指定位置開始查詢collection.find({"date": {"$lt": d}}).skip(1)#跳過合格前一條,返回後面的collection.find(...).limit(5)#查詢5條結果collection.find(...).skip(5).limit(5)#跳過前5條返回後面的5條#排序collection.find(...).sort('username',pymongo.DESCENDING)#使用username排序DESCENDING為倒序,ASCENDING正序,(ASCENDING=1,DESCENDING=-1)#多條件排序collection.find(...).sort(('username',pymongo.DESCENDING),('id',pymongo.ASCENDING))
更新
import pymongoclient = pymongo.MongClient('127.0.0.1')db = client.testcollection = db.usercollection.update({'a':'b'}, {'$set':{'a':'b'}});#update(條件,{'$set':更新值})
刪除
result = collection.delete_many({'a':'b'})#delete_many(條件)result.delete_count #刪除個數result = collection.delete_one({'a':'b'})#delete_one(條件)result.delete_count #刪除個數
建立索引
建立索引可以加快查詢
collection.create_index([('user_id',pymongo.ASCENDING),] ,unique=True)#建立一個唯一的不可重複的索引user_id,一次可以建立多個索引
參考官方文檔
http://api.mongodb.com/python/current/tutorial.html
註:
使用ORM訪問mongo使用mongoengine包
文檔 http://docs.mongoengine.org