數據庫database
創建及查看庫
1.有則使用這個數據庫,沒有就創建
use DATABASE_NAME
2. 查看當前選擇的數據庫,默認是test
db
3.查看數據庫,默認有admin、local和"test",如果數據庫生成但是沒有集合(下面會講)所以此時只有邏輯數據庫產生並沒有真正意義上的物理數據,這樣看不到查詢結果
show dbs
刪除庫
1.刪除選定的數據庫,如果還沒有選擇任何數據庫,然后它會刪除默認的 ' test' 數據庫,執行成功返回{ "dropped" : DATABASE_NAME, "ok" : 1 }
db.dropDatabase()
集合collection(相當於SQL數據庫中的表table)
創建及查看集合
1.查看集合
show collections
2.以下注釋只為方便閱讀,請勿在命令行使用
db.createCollection(name, { //集合的名字 capped: <Boolean>, //是否啟用集合限制,如果開啟需要制定一個限制條件,默認為不啟用,這個參數沒有實際意義 autoIndexId: <Boolean>, //是否使用_id作為索引,默認為使用(true或false) size: <number>, //限制集合使用空間的大小,默認為沒有限制,size的優先級比max要高 max <number>} //集合中最大條數限制,默認為沒有限制 )
3.特殊情況,若沒有newdbc集合,會自動創建集合newdbc並插入數據
db.newdbc.insert({"name" : "yiibai"})
4.常用方法介紹
- 一般來說,我們創建集合用db.createCollection(name),如:db.createCollection("log"),創建一個名字為log的集合,沒有任何的大小,數量限制,使用_id作為默認索引;
- 限制集合空間的大小: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,否則會報錯;
- 即限制最大條數有限制使用空間大小:db.createCollection("log",{size:1024,max:1024})或db.createCollection("log",{capped:true,size:1024,max:1024}),限制集合最大使用空間為1M,最大條數為1024條。
刪除集合
1.執行成功返回true,否則將返回 false
db.COLLECTION_NAME.drop()
文檔document(相當於SQL數據庫中的表column)
增(insert)
1.單條數據插入
db.user.insert({"name":"jack","age":20})
2.批量數據插入采用命令行for循環
刪(remove)
1.不帶參數會刪除全部數據,且不可恢復,切記!
db.user.remove({"name":"joe"})
改(update)
1.整體更新
var model = db.user.findOne({"name":"jack"}) model.age=30 db.user.update({"name":"jack"},model)
2.局部更新
- $inc修改器——比如我們做一個在線用戶狀態記錄,每次修改會在原有的基礎上自增$inc指定的值,如果“文檔”中沒有此key,則會創建key
db.user.update({"name":"jack"},{$inc:{"age":30}}) //年齡增加30
- $set修改器
db.user.update({"name":"jack"},{$set:{"age":10}}) //年齡變為10
3.upsert操作——如果沒有查到,就在數據庫里面新增一條,使用起來很簡單,將update的第三個參數設為true即可。
4.批量更新——在mongodb中如果匹配多條,默認的情況下只更新第一條,那么如果我們有需求必須批量更新,那么在mongodb中實現也是很簡單的,在update的第四個參數中設為true即可
查(find)
1.查找key=value的數據
db.collection.find({ "key" : value })
2.key > value
db.collection.find({ "key" : { $gt: value } })
3.key < value
db.collection.find({ "key" : { $lt: value } })
4.key >= value
db.collection.find({ "key" : { $gte: value } })
5.key <= value
db.collection.find({ "key" : { $lte: value } })
6.value1 < key <value2
db.collection.find({ "key" : { $gt: value1 , $lt: value2 } })
7.key <> value
db.collection.find({ "key" : { $ne: value } })
8.取模運算,條件相當於key % 10 == 1 即key除以10余數為1的
db.collection.find({ "key" : { $mod : [ 10 , 1 ] } })
9.不屬於,條件相當於key的值不屬於[ 1, 2, 3 ]中任何一個
db.collection.find({ "key" : { $nin: [ 1, 2, 3 ] } })
10.屬於,條件相當於key等於[ 1, 2, 3 ]中任何一個
db.collection.find({ "key" : { $in: [ 1, 2, 3 ] } })
11.$size 數量、尺寸,條件相當於key的值的數量是1(key必須是數組,一個值的情況不能算是數量為1的數組)
db.collection.find({ "key" : { $size: 1 } })
12.$exists 字段存在,true返回存在字段key的數據,false返回不存在字度key的數據
db.collection.find({ "key" : { $exists : true|false } })
13.正則,類似like;“i”忽略大小寫,“m”支持多行.如joe會匹配出來
db.collection.find({ "name":/^j/,"name":/e$/ })
14.$or或 (注意:MongoDB 1.5.3后版本可用),符合條件a=1的或者符合條件b=2的數據都會查詢出來
db.collection.find({ $or : [{a : 1}, {b : 2} ] })
15.符合條件key=value ,同時符合其他兩個條件中任意一個的數據
db.collection.find({ "key": value , $or : [{ a : 1 } , { b : 2 }] })
16.內嵌對象中的值匹配,注意:"key.subkey"必須加引號
db.collection.find({ "key.subkey" :value })
17.這是一個與其他查詢條件組合使用的操作符,不會單獨使用。上述查詢條件得到的結果集加上$not之后就能獲得相反的集合。
db.collection.find({ "key": { $not : /^val.val$/i } })
18.$where中的value,就是我們非常熟悉,非常熱愛的js
db.collection.find({ $where:function(){return this.name=="joe"} })