本篇文章是對MongoDB資料庫的基本操作梳理,如有錯誤,請斧正!!
此篇文章開始之前已經預設你電腦上裝了MongoDB資料庫,所以不再贅述安裝。
基本的Shell命令
- 顯示已經存在的資料庫
>show dbs
複製程式碼
- 進入資料庫
>use test(資料庫名字)
複製程式碼
- 顯示資料庫中的集合
>show collections
複製程式碼
- 顯示當前位置
>db (常用)
複製程式碼
資料的基本操作
- 建立資料庫
>use test(資料庫名字) //若沒有test資料庫,使用此命令會自動建立資料庫,
資料庫預設為空
複製程式碼
- 新建資料集合並插入資料
>db.users.insert() //users為集合名,當無此集合時,使用此命令可建立次集合,
並加入資料。
//例如:
>db.users.insert({'name':'鋼鐵俠'})
複製程式碼
- 查詢所有資料
>db.users.find() //使用此語句可以檢視users集合下的所有資料
複製程式碼
- 查詢集合的第一條資料
>db.users.findOne() //使用此語句可以查詢users集合下的第一條資料
複製程式碼
- 修改集合中的資料
>db.users.update({查詢條件},{修改資料})//第一個引數是要查詢的條件,
第二個引數是要修改成的值,
注意:在這裡可以多加資料項
//例如:
>db.users.update({'name':'鋼鐵俠'},{'age':21,'sex':1})
複製程式碼
- 刪除集合中的資料
>db.users.remove({刪除條件})
//例如:
>db.users.remove({'name':'鋼鐵俠'})
複製程式碼
- 刪除資料集合
>db.users.dorp() //刪除整個集合,使用時一定要注意慎重
複製程式碼
- 刪除資料庫
>db.dropDatabase() //刪除整個資料庫,在刪除時一定先要進入該資料庫
複製程式碼
update 修改器
- $set修改器
用於修改一個指定的資料項
>db.users.update({'name':'鋼鐵俠'},{$set:{'age':23}})//修改ok
複製程式碼
還可以用於修改巢狀內容
>db.users.update({'name':'鋼鐵俠'},{$set:{'school.name':'大學'})
複製程式碼
- unset修改器
用於將資料項刪除
>db.users.update({'name':'鋼鐵俠'},{$unset:{'age':''}})//修改ok
複製程式碼
- $inc修改器
用於對value值是數字的資料修改,修改的一定是數字,對字串不起作用
>db.users.update({'name':'js'},{$inc:{'age':-2}})
複製程式碼
- multi選項
multi是update的引數,可選,預設是fasle,只更新找到的第一條資料,如果這個引數為true,就把按條件查出來的多條記錄全部跟新
>db.users.update({},{$set:{'like':[]}},{multi:true})
//首先匹配所有,然後給集合中的每個資料新增like資料項
複製程式碼
- upsert選項
upsert是update的引數,可選,預設是fasle,upsert是在找不到值的情況下,直接插入這條資料,true代表沒有就新增,fasle代表沒有不新增。
>db.users.update({name:'js'},{$set:{age:20}},{upsert:true})
//如果找到age為20歲,就不新增,否者新增age:20
複製程式碼
update陣列修改器
- $push修改器
$push的作用是追加陣列中的值
>db.users.update({'name':'js'},{$push:{like:'畫畫'}})
複製程式碼
$push也可以給內嵌文件新增值
>db.users.update({'name':'js'},{$push:{'school.name':'小學'}})
複製程式碼
- $ne修改器
$ne修改器的作用是,檢查一個值是否存在,如果不存在就執行相關操作,如果存在就不會執行相關操作
>db.users.update({'name':'js',age:{$ne:21}},{$set:{age:21}}})
複製程式碼
總結:沒有就執行,有就不執行
- $addToSet修改器
$addToSet是$ne的升級版,作用是,查詢是否存在,不存在就push上
>db.users.update({name:'js'},{$addToSet:{like:'上網'}})
複製程式碼
- $each修改器
$each可以傳入一個陣列,一次增加多個值進去,相當於批量增加,效能比迴圈操作好的多
>var newLikes = ['滑雪','打籃球']
>db.users.update({name:'js'},{$addToSet:{like:{$each:newLikes}}})
複製程式碼
- $pop修改器
$pop刪除陣列值,只刪除一次,並不是刪除陣列中的所有值,它有兩個選項1和-1
1:從陣列末尾進行刪除
-1:從陣列前面進行刪除
>db.users.update({name:'js'},{$pop:{like:1}})
>>db.users.update({name:'js'},{$pop:{like:-1}})
複製程式碼
- 陣列定位修改
>db.users.update({name:'js'},{$set:{like.2:'踢足球'}})
複製程式碼
條件操作符
- 篩選欄位
有時我們只想看到某一些欄位,我們可以這樣操作:
>db.users.find({name:'js'},{name:true,age:true})
複製程式碼
這樣我們就只能看到name和age欄位,true和false,可以用1和0表示
小於($lt)
小於等於($lte)
大於($gt)
大於等於($gte)
不等於($ne)
>db.users.find({age:{$lt:20,$gt:18}})
複製程式碼
find多條件查詢
- $in修飾符
可以解決查詢多值的情況
>db.users.find({age:{$in:[21,23]})//查詢年齡是21和23的資料
複製程式碼
- $or修飾符
用來查詢多個鍵值的情況,或者的意思
>db.users.find({$or:[{age:{$gte:23}},{like:'畫畫'}]})
//查詢年齡大於等於23或者喜歡畫畫的資料
複製程式碼
- $and修飾符
就是與的意思
>db.users.find({$and:[{age:{$gte:23}},{like:'畫畫'}]})
//查詢年齡大於等於23和喜歡畫畫的
複製程式碼
find的陣列查詢
- 基本操作
>db.users.find({like:['畫畫','寫字']})//查詢喜歡畫畫寫字的資料,[]完全匹配
>db.users.find({like:'畫畫'})
//查詢喜歡畫畫的資料,只要like中有畫畫都找出來,未完全匹配
複製程式碼
- $all修飾符
相當於,與的意思
>db.users.find({like:{$all:['畫畫','打籃球']}})
//既找出畫畫又找出打籃球的資料
複製程式碼
- $in修飾符
相當於或者的意思
>db.users.find({like:{$in:['游泳','學習']}})
//查詢喜歡游泳或者學習的資料
複製程式碼
- $size
$size可以根據陣列的數量查詢出結果
>db.users.find({like:{$size:5}})
//查詢出like的數量為5的資料
複製程式碼
find的引數
query:這個就是查詢條件,MongoDB預設的的一個引數
fields:查詢出來後顯示的結果樣式,可以用true和false控制是否顯示。
limit:返回的數量,後邊跟數字,控制每次查詢返回的結果數量。
skip:跳過多少個顯示
sort:排序方式,從小到大排序使用1,從大到小排序使用-1
我們可以用這個實現分頁
>db.users.find().limit(8).skip(8).sort({age:-1})
//返回8條資料,跳過8條資料
複製程式碼
未完待續。。。。