本文為轉載,原文:MongoDB的增刪改查基本命令
創建庫
命令:
> use dbName
若數據庫存在,則該命令的效果是切換到當前數據庫;若該數據庫不存在,則該命令可以創建數據庫,并切換到該數據庫。
下面是創建mydb
數據庫的截圖:
創建集合
命令:
> db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean>, size: <number>, max <number>} )
相關參數說明:
name
:集合的名字
capped
:是否啟用集合限制,如果開啟需要制定一個限制條件,默認為不啟用,這個參數沒有實際意義
size
:限制集合使用空間的大小,默認為沒有限制
max
:集合中最大條數限制,默認為沒有限制
autoIndexId
:是否使用_id作為索引,默認為使用(true或false)
size的優先級比max要高
常用方法介紹:
- 一般來說,我們創建集合用
db.createCollection(name)
,如:db.createCollection("log")
,創建一個名字為log的集合,沒有任何的大小,數量限制,使用_id作為默認索引; - 限制集合空間的大?。?code>db.createCollection("log",{size:1024})或
db.createCollection("log",{capped:true,size:1024})
,創建一個名字為log集合,限制它的空間大小為1M,如果超過1M的大小,則會刪除最早的記錄; - 限制集合的最大條數:
db.createCollection("log",{max:1024})
,創建一個名字為log集合,最大條數為1024條,超過1024再插入數據的話會刪除最早的一條記錄。這個不能使用capped:true,否則會報錯; - 即限制最大條數有限制使用空間大?。?code>db.createCollection("log",{size:1024,max:1024})或db.createCollection("log",{capped:true,size:1024,max:1024}),限制集合最大使用空間為1M,最大條數為1024條
下面是在mydb
數據中創建students
集合的截圖:
數據插入
命令:
db.collectionName.insert(value)
其中value
是Bson
格式的數據。
接下來,我們便在我們的students
集合中添加數據:
> db.students.insert({
name:"tom",
age:18,
gender:"male",
grade:"Freshman"
})
結果如下:
下面我們多插入幾條數據,便于后面的查詢:
db.students.insert({
name:"bob",
age:19,
gender:"male",
grade:"Sophomore"
})
db.students.insert({
name:"Oliver",
age:21,
gender:"male",
grade:"Junior"
})
db.students.insert({
name:"Alice",
age:22,
gender:"female",
grade:"Senior"
})
db.students.insert({
name:"Lily",
age:21,
gender:"female",
grade:"Senior"
})
db.students.insert({
name:"Klay",
age:20,
gender:"male",
grade:"Sophomore"
})
結果:
查詢
簡單查詢
命令:
> db.collectionName.find(option)
比如以下命令就是查詢出我們之前插入到students
的全部數據:
db.students.find()
當然你也可以在命令的后面加一個
pretty()
方法,這樣查詢出來的結果會被格式化:
db.students.find().pretty()
結果:
(截圖沒截完全)
這樣的話,數據可讀性會高一點。
查詢name為Alice的學生:
db.students.find({name:"Alice"}).pretty()
條件操作符
MongDB的條件操作符如下:
-
>
: 大于 - $gt #greater than -
<
:小于 - $lt # less than -
<=
:小于等于 - $lte -
>=
:大于等于 -$gte -
!=
:不等于 -$ne
比如查詢年齡大于20歲的學生:
db.students.find({age:{$gt:20}})
類型操作符
另外,mongodb還有一種按照數據類型來查詢的操作符$type
:
type的值如下:
- 雙精度型-1
- 字符串-2
- 對象-3
- 數組-4
- 二進制數據-5
- 對象ID-7
- 布爾類型-8
- 數據-9
- 空-10
- 正則表達式-11
- JS代碼-13
- 符號-14
- 有作用域的JS代碼-15
- 32位整型數-16
- 時間戳-17
- 64位整型數-18
- Min key-255
- Max key-127
例如,查找name
是字符串的文檔記錄:
db.students.find({name:{$type:2}})
與
查找年齡大于等于20歲的男學生:
db.students.find({age:{$gte:20},gender:"male"})
或($in)
查詢大一、大二的學生:
db.students.find({grade:{$in:["Freshman","Sophomore"]}})
非($nin)
查詢不是大一、大二的學生:
db.students.find({grade:{$nin:["Freshman","Sophomore"]}})
正則匹配
查詢姓名包含li
的學生:
db.students.find({name:/li/})
where
查找students集合中包含name
字段的數據:
db.getCollection("students").find({$where:function(){ return !!this.name; } })
limit 與 skip
讀取指定數量的數據記錄limit
范例:
db.students.find().limit(2)
讀取2條記錄,默認是排在最前面的那2條被讀取。
讀取時跳過指定數量的數據記錄
skip
范例:
db.students.find().limit(2).skip(2)
當然,還可以添加 find 的查找條件的參數,以便進行更精確的查找。
有了這個功能,也就是說,我們可以分頁查詢了。
排序sort
mongodb的sort方法可以按照指定的字段進行升序或降序。
升序為1,降序為-1
語法:
db.collectionName.find().sort({KEY:1|-1})
范例,查詢students按照年齡升序排列:
db.students.find().sort({age:1})
修改(update)
命令:
db.collectionName.update(selector, newValue, upserts, multipleUpdate)
參數詳解:
-
selector
:是個檢索選擇器,明確查詢條件的 -
newValue
:要更新的內容,包含兩種基本情況,即有沒有$set、$inc、$push這些參數:
情況一、無參數,則newValue替換掉原先selector的內容;
情況二、有參數,則$set是對指定field進行更新newValue;$inc要求指定field為數值,加上newValue值;$push要求指定field為數組,為數組加入newValue項。 -
upserts
:是個邏輯值參數,默認為false,即根據selector查詢,查到了document,那就執行更新;沒查到就啥也不做。那設置為true,意思就很明顯了,如果沒查到就Create一個新document存放selector和newValue。 -
multipleUpdate
:也是個邏輯值參數,默認為false,即根據selector查詢,查到了documents,那就執行更新第一條document;設置為true的話,就把所有查到的document都更新
案例,將tom的年齡修改為19歲:
db.students.update({name:"tom"},{$set:{age:19}})
刪除(remove)
命令:
db.collection.remove(<query>,<justOne>)
參數說明:
-
query
:(可選)刪除的文檔的條件。若該參數為空,則刪除該集合的所有文檔。 -
justOne
:(可選)如果設為 true 或 1,則只刪除一個文檔。
若是刪除整個集合建議用
drop
方法。db.collectionName.drop()
案例,刪除姓名為bob的學生:
db.students.remove({name:"bob"})
完
本文為原創,轉載請注明出處