pymongo 增删改查基本操作汇总(基本)
mongo_conn = mongo['user']
1.查詢
a.查詢所有:mongo_conn.find({})
b.單條記錄查詢:mongo_conn.find_one({'name': 'Mike'})
c.多條記錄查詢:
# 對于多條數據的查詢,我們可以使用find()方法,例如在這里查找年齡為20的數據,示例如下:
results = mongo_conn.find({'age': 20})??# 返回結果是Cursor類型,相當于一個生成器,我們需要遍歷取到所有的結果,每一個結果都是字典類型。
for result in results:
????print(result)
d.條件規則查詢
# 如果要查詢年齡大于20的數據,則寫法如下:results = collection.find({'age': {'$gt': 20}})
# 在這里將比較符號歸納如下表:
$lt小于{'age': {'$lt': 20}}
$gt大于{'age': {'$gt': 20}}
$lte小于等于{'age': {'$lte': 20}}
$gte大于等于{'age': {'$gte': 20}}
$ne不等于{'age': {'$ne': 20}}
$in在范圍內{'age': {'$in': [20, 23]}}
$nin不在范圍內{'age': {'$nin': [20, 23]}}
# 在這里將一些功能符號再歸類如下:
$regex匹配正則{'name': {'$regex': '^M.*'}}name以M開頭
$exists屬性是否存在{'name': {'$exists': True}}name屬性存在
$type類型判斷{'age': {'$type': 'int'}}age的類型為int
$mod數字模操作{'age': {'$mod': [5, 0]}}年齡模5余0
$text文本查詢{'$text': {'$search': 'Mike'}}text類型的屬性中包含Mike字符串
$where高級條件查詢{'$where': 'obj.fans_count == obj.follows_count'}自身粉絲數等于關注數
?
2.計數
要統計查詢結果有多少條數據,可以調用count()方法,
a.如統計所有數據條數:
count = mongo_conn.find().count()
b. 或者統計符合某個條件的數據:
count = mongo_conn.find({'age': 20}).count()
?
3. 排序
a.可以調用sort方法,傳入排序的字段及升降序標志即可,
示例如下:
results = mongo_conn.find().sort('name', pymongo.ASCENDING)
b. 偏移,可能想只取某幾個元素,在這里可以利用skip()方法偏移幾個位置,比如偏移2,就忽略前2個元素,得到第三個及以后的元素。
results = mongo_conn.find().sort('name', pymongo.ASCENDING).skip(2)
c. 另外還可以用limit()方法指定要取的結果個數,示例如下:
results = mongo_conn.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
# 值得注意的是,在數據庫數量非常龐大的時候,如千萬、億級別,最好不要使用大的偏移量來查詢數據,很可能會導致內存溢出,可以使用類似find({'_id': {'$gt': ObjectId('593278c815c2602678bb2b8d')}}) 這樣的方法來查詢,記錄好上次查詢的_id。
?
4.更新
a. 對于數據更新可以使用update()方法,指定更新的條件和更新后的數據即可,例如:
condition = {'name': 'Kevin'}
student = mongo_conn.find_one(condition)
student['age'] = 25
result = mongo_conn.update(condition, student)????#運行結果:?{'ok': 1, 'nModified': 1, 'n': 1, 'updatedExisting': True}
# 返回結果是字典形式,ok即代表執行成功,nModified代表影響的數據條數。
?
b 另外update()方法其實也是官方不推薦使用的方法,在這里也分了update_one()方法和update_many()方法,用法更加嚴格,
# 第二個參數需要使用$類型操作符作為字典的鍵名,我們用示例感受一下。
condition = {'name': 'Kevin'}
student = mongo_conn.find_one(condition)
student['age'] = 26
result = mongo_conn.update_one(condition, {'$set': student})?# 其返回結果是UpdateResult類型,然后調用matched_count和modified_count屬性分別可以獲得匹配的數據條數和影響的數據條數。
print(result.matched_count, result.modified_count)
# 我們再看一個例子:
condition = {'age': {'$gt': 20}}
result = mongo_conn.update_one(condition, {'$inc': {'age': 1}})??# 在這里我們指定查詢條件為年齡大于20,然后更新條件為{'$inc': {'age': 1}},執行之后會將第一條符合條件的數據年齡加1。
# 如果調用update_many()方法,則會將所有符合條件的數據都更新,示例如下:
condition = {'age': {'$gt': 20}}
result = mongo_conn.update_many(condition, {'$inc': {'age': 1}})??# 所有匹配到的數據都會被更新。
c. replace_one()
student = mongo_conn.replace_one({'hp': 1}, {'tel': 1}) #更改存儲鍵名
?
5. 刪除
a. 刪除操作比較簡單,直接調用remove()方法指定刪除的條件即可,符合條件的所有數據均會被刪除,示例如下:
result = mongo_conn.remove({'name': 'Kevin'})??# 運行結果:?{'ok': 1, 'n': 1}
b. delete_one()和delete_many()方法:
result = mongo_conn.delete_one({'name': 'Kevin'})
result = mongo_conn.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)
# delete_one()即刪除第一條符合條件的數據,delete_many()即刪除所有符合條件的數據,返回結果是DeleteResult類型,
# 可以調用deleted_count屬性獲取刪除的數據條數。
?
6.組合方法
a.find_one_and_delete
result = mongo_conn.find_one_and_delete({"name":"zheng"})??# 查找第一條并刪除
b.find_one_and_replace
result = mongo_conn.find_one_and_replace({'x': 1}, {'y': 1})??# 查找第一條并替換
c.find_one_and_update
result = mongo_conn。find_one_and_update({'_id': 665}, {'$inc': {'count': 1}, '$set': {'done': True}}) #運行結果: {u'_id': 665, u'done': False, u'count': 25}}
?
7.情況表數據
result = a.remove() {u'ok': 1, u'n': 3} 3代表個數,1表示成功?
8. 刪除表
result = a.drop()?
總結
以上是生活随笔為你收集整理的pymongo 增删改查基本操作汇总(基本)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu16.04下安装mysql详
- 下一篇: DNS常用记录类型和服务发现(DNS解析