日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pymongo 增删改查基本操作汇总(基本)

發布時間:2025/3/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 增删改查基本操作汇总(基本)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。