1. 程式人生 > >MongoDB增刪改查命令操作

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為指定按降序來建立索引。