MongoDB常用增刪改查語句


數據庫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"} })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM