
來源:Python爬蟲與數據挖掘
作者:Python進階者
大家好,我是Python進階者。
作為非關系數據庫的代表--Mongo,可以說是讓人又愛又恨,讓人愛的是它的便捷性,讓人恨的是它的配置,實在是坑多。那么今天我們就來深入剖析它吧。
pip install pymongo from pymongo import MongoClient
1.普通登錄,又稱游客登陸,安全等級低
MongoClient('mongodb://localhost:27017/')
2.用戶密碼登陸,安全等級高
MongoClient('mongodb://hwzjj:123456@localhost:27017/hw')
這里連接到了用戶名為hwzjj,密碼為123456的用戶。
為了安全,我們使用用戶名和密碼登陸,然后創建一個集合,不知道大家對Mongo創建集合還有沒有印象,反正小編還有,廢話不多說,先創建兩個集合。
db.createCollection(name='student',option={capped:true,autoIndexId:true,size:100,max:1000}) db.createCollection(name='teacher',option={capped:true,autoIndexId:true,size:200,max:2000})
這樣就創建了一student和teacher的集合了。然后我們再來顯示一下所有的集合名:
show collections;
然后我們往集合里插入數據,在Mongo中是這樣插入的:
可以看到我們成功插入了兩條數據,接下來我們利用Python來插入數據。
1.直接使用創建好的集合插入數據
from pymongo import MongoClient
client=MongoClient('mongodb://hwzjj:123456@localhost:27017/hw') 連接數據庫
db=client['hw'] 選擇數據庫hw
coll=db['student'] 選擇集合
res={'id':'0003','name':'任性','age':43}
first=coll.insert_one(res) 將數據插入到集合中 print(first.inserted_id) 打印插入數據的id(每個插入數據都會有)
2.自己創建集合插入數據
from pymongo import MongoClient
client=MongoClient('mongodb://hwzjj:123456@localhost:27017/hw')
db=client['hw']
db.create_collection('teacher') 創建集合
res={'id':'0001','name':'boy','age':36}
last=db.student.insert_one(res) 插入數據 print(last.inserted_id) 打印id
3.插入多條數據
import random
from pymongo import MongoClient
client=MongoClient('mongodb://hwzjj:123456@localhost:27017/hw')
db=client['hw']
coll=db['student'] def get(): for y in range(100000):
data={'id':y,'name':'user--'+str(y),'age':random.choice(range(100))} yield data for y in get():
coll.insert(y)
同樣是插入十萬個數據, 不過數據卻是比Mysql慢一點,可自行測試。
注:執行插入操作時,Insert最多可插入四條同樣的記錄。
仍舊是先要獲取集合,然后對集合中的內容進行修改。
1.更新匹配到的第一條數據
from pymongo import MongoClient
client=MongoClient('mongodb://hwzjj:123456@localhost:27017/hw')
db=client['hw']
coll=db['student']
coll.update_one({'name':'user--10'},{'$set':{'name':'用戶已注銷'}}) 更新匹配到的第一條數據
2.更新匹配到的所有數據
我們創建四個一樣的數據,將程序執行四次即可:
from pymongo import MongoClient
client=MongoClient('mongodb://hwzjj:123456@localhost:27017/hw')
db=client['hw']
coll=db['student']
coll.insert({'id':'111','name':'hw','age':43})
可以看到生成了四個同樣的記錄,當然了,只能生成最多4條記錄。然后我們全部將它們數據修改。
coll.update({'name':'hw'},{'$set':{'name':'用戶已注冊'}})
1.刪除所有符合條件的數據
from pymongo import MongoClient
client=MongoClient('mongodb://hwzjj:123456@localhost:27017/hw')
db=client['hw']
coll=db['student']
coll.insert({'id':'111','name':'hw','age':43}) 插入數據
coll.remove({'name':'hw'}) 刪除所有name 為hw的數據,注意不要以id為條件來刪除,會報錯
coll.delete_many({'name':'hw'}) 跟上者功能一樣
2.刪除所有符合條件的第一條數據
from pymongo import MongoClient
client=MongoClient('mongodb://hwzjj:123456@localhost:27017/hw')
db=client['hw']
coll=db['student']
coll.insert({'id':'111','name':'hw','age':43})
coll.delete_one({'name':'hw'}) 刪除符合條件的第一條數據
1.查詢符合條件的第一條數據
2.查詢符合條件的所有數據
3.查找后刪除
4.查找后替換
5.查找后更新
6.統計符合條件的記錄數量
coll.find().count() # 記錄符合條件的數量
7.符合條件的數據的排序
coll.find().sort('name', pymongo.ASCENDING) # 升序排序 DESCENDING 降序排序
8.符合條件數量中跳過
coll.find().sort('name', pymongo.ASCENDING).skip(1) # 跳過一個記錄
9.限制符合條件輸出數量
coll.find().sort('name', pymongo.ASCENDING).limit(2) # 輸出兩個符合條件的記錄
10.通過Id來查找
每個插入的數據都會生成一個id,貌似被加密了,前面我們已經和它打過交道了,下面來看下它的使用。
from bson.objectid import ObjectId
find_one({'_id': ObjectId(id_name)})
1.創建索引
可以看到有兩個索引,一個是Mongo自動創建的在id上的索引,另一個是剛剛創建在name上的索引。
2.獲取索引
for y in coll.list_indexes(): # 獲取所有索引 print(y)
3.刪除索引
可以看到剛剛的索引name已經被刪除了,而且只有一條數據了,那么有人就問了,為何不把_id一起刪除,很抱歉,這個是刪不了的。
通過本章對Pymongo的學習,相信你已經可以勝任日常一些開發了,Pymongo中還有很多值得學習的地方,值得你去推敲,在這里就不一一列舉了,希望本文能帶大家零基礎毫無壓力入門Pymongo。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24