MongoDB資料庫的基本操作梳理

Destiny本尊發表於2019-04-13

本篇文章是對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條資料
複製程式碼

未完待續。。。。

相關文章