1. 程式人生 > >mongodb增刪改查操作

mongodb增刪改查操作

Note:mongodb儲存的是文件,且文件是json格式的物件,所以增刪改查都必須是json格式物件。

1、增加資料,語法: db.collectionName.isnert(document)。

#不指定文件的id,資料庫會預設分配一個隨機id
db.user.insert({name:'zhaos',age:23,sex:'f'});
#指定文件的id
db.user.insert({_id:5,name:'zhaos',age:23,sex:'f'});
#增加單個文件
db.user.insert({_id:6,name:'zhaos',age:23,sex:'f'});
#增加多個文件 
db.user.insert([{_id:
2,name:'zhangs',age:21,sex:'m'},{_id:3,name:'wangw',age:22,sex:'m'},{_id:4,name:'zhaos',age:23,sex:'f'}]);

注意,這裡解釋下自動生成的id,MongoDB採用了一個ObjectId的型別來做主鍵,ObjectId是一個12位元組的 BSON 型別字串,按照位元組順序,依次代表:

    4位元組:UNIX時間戳 
    3位元組:表示執行MongoDB的機器 
    2位元組:表示生成此_id的程序 
    3位元組:由一個隨機數開始的計數器生成的值 

 

2、刪除資料,語法: db.collection.remove(查詢表示式, 選項)。選項是指需要刪除的文件數,{0/1},預設是0,刪除全部文件

#將所有_id=7的文件刪除
db.user.remove({_id:7})  
#將gender:'m'的所有文件刪除
db.user.remove({gender:'m'})
#只刪除一個gender:'m'的文件,num是指刪除的文件數
db.user.remove({gender:'m',1})

 

3、修改資料,語法: db.collection.update(查詢表示式,新值);

#從結果可以看出,這只是在替換一個文件,並非修改一個文件欄位
> db.user.update({name:'zhangs'},{name:'liul'})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find();
{ "_id" : 2, "name" : "liul" }

#修改一個文件的欄位,必須使用$set:{屬性:'值'}
> db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find();
{ "_id" : 6, "name" : "kongkong", "age" : 23, "sex" : "f" }


修改時的賦值表示式
$set 修改某列的值
db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})

$unset 刪除某個列
eg:db.user.update({name:'kongkong'},{$unset:{name:'kongkong'}})

$rename 重新命名某個列
eg:db.user.update({_id:6},{$rename:{sex:'gender'}})
eg:db.user.update({},{$rename:{'sex':'gender'}},{multi:true})

$inc 增長某個列
eg:db.user.update({_id:6},{$inc:{age:2}})

$setOnInsert 當upsert為true時,並且發生了insert操作時,可以補充的欄位.
eq:db.user.update({_id:7},{$setOnInsert:{age:5,gender:'f'}},{upsert:true})

 

4、查詢資料,語法: db.collection.find(查詢表示式,查詢的列)。

#查詢一個表中的所有文件    
db.user.find()

#查詢特定屬性的文件
db.user.find({_id:3})

#查詢所有文件,顯示gender列,不顯示id
db.user.find({},{gender:1,_id:0})

#查詢所有gender:'m'的文件,顯示gender列,age列,不顯示id
db.user.find({gender:'m'},{gender:1,_id:0,age:1})

 

5、高階查詢知識點。

#not equal 不等於
$ne ---> != 查詢表示式
#查詢age不等於25的文件
db.user.find({age:{$ne:25}})

#$nin --> not in
#查詢age為20和25的文件
db.user.find({age:{$nin:[20,25]}})

#$all
語法: {field:{$all:[v1,v2..]}} 
是指取出 field列是一個數組,且至少包含 v1,v2值
db.user.find({age:{$all:[30]}})

$exists 
語法: {field:{$exists:1}}
作用: 查詢出含有field欄位的文件
#查詢含有age列的文件
db.user.find({age:{$exists:1}})

$nor
{$nor,[條件1,條件2]}
是指所有條件都不滿足的文件為真返回
#查詢所有age不為30,gender不為f的文件
db.user.find({$nor:[{age:30},{gender:'f'}]})

正則表示式查詢
#查詢所有以name:yang開頭的文件  /patern/
db.user.find({name:/yang*/})
#查詢所有以name:zhao開頭的文件,且不區分大小寫  /patern/i
db.user.find({name:/zhao/i})