MongoDB增刪改查命令操作
1. 資料庫操作
l 顯示所有資料庫
showdbs
顯示所有資料庫(預設有3個:admin、local、test)。
admin和local會顯示出來,test沒有資料所以不顯示。
l 開啟/建立資料庫
use 資料庫名
例如:use tb_user
自動建立一個tb_user資料庫,但顯示時不會出現,因為它裡面沒有集合和文件。
如資料庫存在則開啟,不存在則建立。
l 顯示當前資料庫
db
l 刪除資料庫
db.dropDatabase()
2. 集合(表)操作
l 資料型別
基本資料型別(字串、整型、布林型、浮點、時間戳)
資料、物件、二進位制、程式碼、正則表示式。
l 檢視集合
showcollections
l 建立集合
db.createCollection(name,[options])
options,可選項,指定有關記憶體大小和索引的選項
例1:
db.createCollection("tb_user")
db.createCollection("tb_user", {capped : true, autoIndexId : true, size :6142800, max : 10000 })
capped:true ---如果為true,則啟用封閉的集合。上限集合是固定大小的集合,它在達到其最大大小時自動覆蓋其最舊的條目。如果指定true,則還需要指定size引數。
autoIndexId:true ---如果為true,則在_id欄位上自動建立索引。預設值為false
size:6142800 ---指定上限集合的最大大小(以位元組為單位)。 如果capped為true,那麼還需要指定此欄位的值。
max:10000 ---指定上限集合中允許的最大文件數。
l 刪除集合
db.集合名.drop()
例:db.tb_user.drop()
3. 文件(資料)操作
l 新增
db.集合名.save({資料},……)
或
db.集合名.insert({資料},……)
例1:新增一條文件
db.tb_user.insert({ _id : 1, name: "李小龍", age: 20 })
說明:_id
例2:新增多條文件
db.tb_user.insert([{
_id : 2,
name :"李大龍",
age :18
}, {
_id : 3,
name :"李分赴",
age :16
}]);
l 刪除
db.集合名.remove({刪除條件})
例1:刪除學號為1的文件
db.tb_user.remove({_id :1})
例2:刪除性別為男且長沙市的
db.tb_user.remove({ $and : [{sex :"男"},{address :"長沙市"}] })
例3:刪除年齡等於19歲
db.tb_user.remove({"age":19})
例4:刪除年齡大18 小於20的
SQL:delete tb_user whereage>18 and age<20
db.tb_user.remove({
$and:[{ "age" : {$gt:18} }, {"age" : {$lt:20}}]
})
l 修改
db.集合名.update({條件},{$set:{新資料}})
例1:修改ID為3的人的姓名
db.tb_user.update( {"_id":3},{$set:{"name":"金大大"}} )
例2:修改年齡在40歲以下的,姓名改成張三
db.tb_user.update({"age":{$lte:40}}, {$set:{"name":"張三"}}, {multi:true})
注意:{multi:true}用於修改多個時
例3:將ID為3的人年齡+10
db.tb_user.update({"_id":3}, {$set: {$inc:{"age":10}} })
l 查詢
db.集合名.find()
例1:檢視集合中文件
db.tb_user.find()
db.tb_user.find().pretty() //格式化資料,多條資料看效果(不一定有效果)
例2:重複資料
db.tb_user.distinct("name")
例3:查詢指定的列
select name,age from 表名
db.tb_user.find({}, {name: 1, age: 1})
db.tb_user.find({}, {name: 0})
說明:當然name也可以用true或false,當用ture的情況下name:1效果一樣,如果用false就是排除name,顯示name以外的列資訊。
例4:查詢前5條資料
db.tb_user.find().limit(5)
例5:查詢10條以後的資料
db.tb_user.find().skip(10)
例6:查詢在5-10之間的資料
db.tb_user.find().limit(10).skip(5)
l 帶條件查詢
符號 | 表現形式 |
= | { "key" : "value" } |
< | { "key" : {$lt : value} } |
> | { "key" : {$gt : value} } |
<= | { "key" : {$lte : value} } |
>= | { "key" : {$gte : value} } |
!= | { "key" : {$ne : value} } |
例1:查詢name為“李大龍”的文件
db.tb_user.find( {"name" : "李大龍"} )
例2:查詢age小於20的文件
db.tb_user.find( {"age" : { $lt :20 }} )
例3:查詢age大於20的文件
db.tb_user.find( {"age" : {$gt :20} } )
例4:查詢age不等於20的文件
db.tb_user.find( {"age" : {$ne :20} } )
{ "_id" : 1, "name" : "tom", "sex" : "男", "score" : 100, "age" : 34 } { "_id" : 2, "name" : "jeke", "sex" : "男", "score" : 90, "age" : 24 } { "_id" : 3, "name" : "kite", "sex" : "女", "score" : 40, "age" : 36 } { "_id" : 4, "name" : "herry", "sex" : "男", "score" : 90, "age" : 56 } { "_id" : 5, "name" : "marry", "sex" : "女", "score" : 70, "age" : 18 } { "_id" : 6, "name" : "john", "sex" : "男", "score" : 100, "age" : 31 } |
l and操作符
db.集合名.find({$and:[{條件1},{條件2}...]})
例1:查詢年齡在20到30歲之間的
db.tb_user.find( {$and : [ {"age":{$gt:20}}, {"age":{$lt:30}} ] } )
例2:查詢年齡=20歲和年齡=22歲的
db.tb_user.find( {age: 20, age: 22} );
l or操作符
db.集合名.find({$or:[{條件1},{條件2}...]})
例1:查詢年齡=22或=25歲的
db.tb_user.find( { $or : [{age: 22}, {age: 25}] } );
l 模糊查詢
db.集合名.find({"field_name":/value/})
或
db.集合名.find({"field_name":{$regex:/value.*/}})
例1:查詢姓名中包含“張”的文件
SQL:select * from tablewhere uname like '%張%'
db.table.find( {"uname" : /.*張.*/} )
或
db.table.find( {"uname" : {$regex: /.*張.*/}} )
或
db.table.find( {"uname" : /張.*/} )
或
db.table.find( {"uname" : /張/} )
例2:查詢姓名中以“張”字開頭的
SQL:select * from tablewhere uname like '張%'
db.table.find( {"uname" : /^張/} )
l 排序 sort()
db.collection.find().sort(條件)
注意:條件值為1表示升序,為-1表示降序。
例1:按年齡進行升序排列
db.tb_user.find().sort( {"age" :1} )
例2:按年齡進行降序排列
db.tb_user.find().sort( {"age" :-1} )
l 統計 count()
db.集合名.count(<query>)
或
db.集合名.find(<query>).count()
例1:統計集合記錄條數
db.tb_user.count();
例2:統計年齡大於等於25的記錄數
db.tb_user.find({age: {$gte: 25}}).count();
l 聚合函式 $sum() $avg() $max() $min()
基本語法為:
db.collection.aggregate([ <stage1>, <stage2>, ... ] )
(1) $sum
SQL: select sex,count(*) personCount fromtb_user group by sex
MongoDb: db.tb_user.aggregate( [{$group: { _id: "sex", personCount: {$sum: 1}}} ] )
SQL: select sex, sum(score) totalScore fromtb_user group by sex
MongoDb: db.tb_user.aggregate( [ {$group: { _id: "sex", totalScore: {$sum:"score"}}}] )
(2) $avg
SQL: select sex,avg(score) avgScore fromtb_user group by sex
Mongodb: db.tb_user.aggregate([{$group: { _id: "sex", avgScore:{$avg:"score"}}}])
(3) $max
SQL: select sex,max(score) maxScore fromtb_user group by sex
Mongodb: db.tb_user.aggregate([{$group: { _id: "sex", maxScore: {$max:"score"}}}])
(4) $min
SQL: select sex,min(score) minScore fromtb_user group by sex
Mongodb: db.tb_user.aggregate([{$group: { _id: "sex", minScore: {$min:"score"}}}])
l 索引
db.COLLECTION_NAME.ensureIndex({KEY:1})
KEY值為要建立的索引欄位,1為指定按升序建立索引,-1為指定按降序來建立索引。