網站首頁 編程語言 正文
數據庫的分類
數據庫可以簡單的分為 MySQL
和 NOSQL
兩類。這里的 NOSQL
不是 NO SQL
的意思,他的意思是 Not Only MySQL
MySQL與NoSQL之間的區別:
1、MySQL是一個基于表格設計的關系數據庫,而NoSQL本質上是非關系型的基于文檔的設計。
2、MySQL數據庫,覆蓋了巨大的IT市場;具有固定市場的MySQL數據庫包含一個龐大的社區。而NoSQL數據庫是最新的到來,與MySQL相比,社區正在慢慢發展。
3、MySQL的嚴格模式限制并不容易擴展,而NoSQL可以通過動態模式特性輕松擴展。
4、MySQL中創建數據庫之前需要詳細的數據庫模型,而在NoSQL數據庫類型的情況下不需要詳細的建模。
5、MySQL提供了大量的報告工具,可以幫助應用程序有效,而NoSQL數據庫缺少用于分析和性能測試的報告工具。
6、MySQL是一個關系數據庫,其設計約束靈活性較低;而NoSQL本質上是非關系型的,與MySQL相比,它提供了更靈活的設計。
7、MySQL中使用的標準語言是SQL;而NoSQL中缺乏標準的查詢語言。
mongodb是什么
mongodb是一種數據庫,它可以儲存鍵值對類型的數據(json,字典)。目前流行的數據庫是 MySQL ,但它并不利于初學者入門。我之前發過 Tinydb,Sqlite3 等數據庫的講解,都比較簡單,那我這次來發一下mongodb數據庫。
mongodb 的數據庫、集合
一個數據庫下可以有多個集合,集合里存儲數據。集合可以理解為 SQL 數據庫中的表。
使用Python操作mongodb
安裝 mongodb
終端運行
pip install pymongo
連接數據庫
client = pymongo.MongoClient(host, port)
host
是地址,port
是端口。
切換數據庫 第一種方法
db_name = client['db_name']
其中 db_name
是你的數據庫名。
第二種方法
db_name = client.get_database('db_name')
其中 db_name
是你的數據庫名。
第三種方法
db_name = client.db_name
切換集合
db_name.test
其中 test
是集合名,沒有這個集合會自動創建。
添加數據
def add_data(data): result = db_name.test.insert_one(data) print(result.inserted_id)
其中 test
是集合名。
添加數據用 insert_one
方法。
其中,data 是要插入的數據,它的類型是鍵值對,即 Python 中的字典。這是一條合法的 data
{"name":"XiaoMing","password":123456}
特殊的,如果要插入在指定 id ,可以這樣寫
result = db_name.test.insert_one({_id:1,"xxx":"xxx",...})
也可以插入多個,只需要把 data 變成
[{"name":"XiaoMing","password":123456},{"name":"XiaoHong","password":123456}]
刪除數據
db.test.remove(查詢表達式, isJustOne)
查詢表達式有這些
語法 | 操作 | 格式 |
---|---|---|
$eq | 等于 | {:} |
$lt | 小于 | {:{$lt:}} |
$lte | 小于或等于 | {:{$lte:}} |
$gt | 大于 | {:{$gt:}} |
$gte | 大于或等于 | {:{$gte:}} |
$ne | 不等于 | {:{$ne:}} |
$or | 或 | {$or:[{},{}]} |
$in | 在范圍內 | {age:{$in:[val1,val2]}} |
$nin | 不在范圍內 | {age:{$nin:[val1,val2]}} |
例如,刪除 test 集合中 name 是 XiaoMing 的所有數據
db.test.remove({<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->name:"XiaoMing"})
修改數據
db.collection.update(查詢表達式,新值,選項)
選項: {upsert : true/false, multi : ture/false}
- upsert:默認為 false , 作用:無相應記錄是否insert,與mysql中的replace同
- multi:默認為 false , 作用:是否作用于多條
#替換文檔,將name為zhangsan的第一個文檔替換為{"name":"lisi","age":10} db.stu.update({"name":"zhangsan"},{"name":"lisi","age":10}) $set修改器,指定要更新的key,key不存在則創建,存在則更新。 #將name為zhangsan的所有文檔替換為{"name":"lisi","no":'100'} db.stu.update({"name":"zhangsan"},{$set:{"name":"lisi","no":'100'}},{multi:true})
查找數據
#查找所有數據 db.集合名.find() # 查找到所有匹配數據 db.集合名.find({條件文檔}) # 只返回匹配的第一個數據 db.stu.find({age:{$gt:16}}) #查詢年齡大于16的記錄 db.stu.find({$or:[{age:{$gt:18}},{name:"xiaoming"}]) #查詢年齡大于18或者名字是xiaoming的記錄 #使用$where后面寫一個函數,返回滿足條件的數據 db.stu.find({$where:function(){return this.age>20}}) #用于讀取指定數量的文檔 db.集合名稱.find().limit(NUMBER) #對查詢結果排序(參數1升序,參數-1降序) db.集合名稱.find().sort({字段:1,...}) #統計結果中的文檔數 db.集合名稱.find({條件}).count()
原文鏈接:https://blog.csdn.net/m0_64036070/article/details/128906558
相關推薦
- 2023-05-18 Kotlin?Extension?Function擴展函數詳細介紹_Android
- 2022-06-10 C++?STL?中的數值算法示例講解_C 語言
- 2023-09-12 如何升級spring boot中spring框架的版本
- 2022-05-02 Redis可視化連接服務器的方法_Redis
- 2022-04-25 C#實戰之備忘錄的制作詳解_C#教程
- 2022-08-22 python作圖基礎之plt.contour實例詳解_python
- 2022-12-08 Python如何遍歷numpy數組_python
- 2022-08-29 GPU服務器的多用戶配置方法_服務器其它
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支