一、數據庫操作
1. 展示所有非空數據庫
show dbs
該命令會列出所有包含數據的數據庫。
2. 顯示當前數據庫
db
此命令用于查看當前正在使用的數據庫。
3. 切換或創建數據庫
use 數據庫名
如果指定的數據庫不存在,MongoDB 會在首次插入數據時自動創建它。如果已存在,則直接切換到該數據庫。
4. 刪除數據庫
db.dropDatabase()
此命令會刪除當前數據庫及其所有數據。
二、集合操作
1. 展示所有集合
show collections
該命令會列出當前數據庫中的所有集合。
2. 創建集合
db.createCollection(集合名)
通過此命令可以創建一個新的集合。
3. 刪除集合
db.集合名.drop()
此命令用于刪除指定的集合。
三、文檔操作
1. 查詢文檔
(1)查詢所有文檔
db.集合名.find({})
此命令會返回集合中的所有文檔。
(2)查詢單個文檔
db.集合名.findOne({})
該命令用于獲取集合中的第一個文檔。
2. 插入文檔
(1)插入單個文檔
db.集合名.insertOne({})
此命令用于插入一個文檔。
(2)插入多個文檔
db.集合名.insertMany([{},{},{}])
該命令可以一次性插入多個文檔。
3. 修改文檔
(1)修改單個文檔
db.集合名.updateOne({}, {$set: {}})
此命令用于修改第一個匹配的文檔。
(2)修改多個文檔
db.集合名.updateMany({}, {$set: {}})
該命令可以修改所有匹配的文檔。
4. 刪除文檔
(1)刪除單個文檔
db.集合名.deleteOne({})
此命令用于刪除第一個匹配的文檔。
(2)刪除多個文檔
db.集合名.deleteMany({})
該命令可以刪除所有匹配的文檔。
四、進階查詢
1. 運算符
(1)比較運算符
查詢年齡大于 30 的文檔:
find({"age": {"$gt": 30}})
查詢年齡大于等于 20 的文檔:
find({"age": {"$gte": 20}})
查詢年齡小于 30 的文檔:
find({"age": {"$lt": 30}})
查詢年齡小于等于 30 的文檔:
find({"age": {"$lte": 30}})
查詢年齡等于 30 的文檔:
find({"age": 30})
查詢年齡不等于 30 的文檔:
find({"age": {"$ne": 30}})
(2)邏輯運算符
and:查詢年齡等于 30 且名字不等于 "t3" 的文檔:
find({"age": 30, "name": {"$ne": "t3"}})
或者:
find({"$and": [{"age": {"$gt": 20}}, {"age": {"$lt": 30}}]})
or:查詢年齡等于 20 或 25 的文檔
find({"$or": [{"age": 20}, {"age": 25}]})
not:查詢年齡不大于 25 的文檔
find({"age": {"$not": {"$gt": 25}}})
(3)范圍運算符
查詢年齡在 25 到 35 之間的文檔
find({"age": {"$gt": 25, "$lt": 35}})
(4)成員運算符
查詢年齡在 [20, 25] 范圍內的文檔
find({"age": {"$in": [20, 25]}})
2. 映射
查詢時隱藏
_id
字段find({}, {"_id": 0})
3. 排序
按年齡降序排序
find({}, {"_id": 0}).sort([("age", pymongo.DESCENDING)])
按年齡和名字降序排序
find({}, {"_id": 0}).sort([("age", pymongo.DESCENDING), ("name", pymongo.DESCENDING)])
4. 分頁
查詢前 2 條記錄
find({}, {"_id": 0}).limit(2)
跳過前 2 條記錄,查詢第 3 條記錄
find({}, {"_id": 0}).skip(2).limit(1)
五、用戶管理
1. 創建用戶
使用客戶端創建用戶后,需要重啟服務。
2. 連接認證
使用連接字符串進行認證
f"mongodb://{user}:{password}@{host}/database_name?authSource=test"
3. 參數認證
使用參數進行認證
host="localhost", port=27017, username='zzy', password='123456', authSource='test' # 認證數據庫,通常是admin
4. 命令行認證
使用命令行進行認證
mongo -u zzy -p -authenticationDatabase test