1. 程式人生 > >MongoDB 筆記 1

MongoDB 筆記 1

 

MongoDB Shell是MongoDB自帶的互動式Javascript shell,用來對MongoDB進行操作和管理的互動式環境。

mongodb 文件索引
高階索引:可以對子文件,建立索引, 可以對陣列建索引.
MongoDB索引是儲存在記憶體中, [如果索引的大小大於記憶體的限制,MongoDB會刪除一些索引,這將導致效能下降。]

MongoDB採用ObjectId,而不是其他比較常規的做法(比如自動增加的主鍵)的主要原因,因為在多個 伺服器上同步自動增加主鍵值既費力還費時。


MongoDB Shell 是一個javascript shell,所以可直接執行JS指令碼.
db 命令用於檢視當前操作的文件(資料庫):

預設資料庫為db
show dbs 顯示所有db

 

 

有一些資料庫名是保留的,可以直接訪問這些有特殊作用的資料庫。

admin: 從許可權的角度來看,這是"root"資料庫。要是將一個使用者新增到這個資料庫,這個使用者自動繼承所有資料庫的許可權。一些特定的伺服器端命令也只能從這個資料庫執行,比如列出所有的資料庫或者關閉伺服器。
local: 這個資料永遠不會被複制,可以用來儲存限於本地單臺伺服器的任意集合
config: 當Mongo用於分片設定時,config資料庫在內部使用,用於儲存分片的相關資訊。

 

文件型別: 

MongoDB 的文件不需要設定相同的欄位,並且相同的欄位不需要相同的資料型別

,這與關係型資料庫有很大的區別,也是 MongoDB 非常突出的特點。

如: 

db.reply.insert({name:"美麗",age:10});
db.reply.insert({name:"美麗",age:'50歲了',sex:0})

 


 

capped collections

  • 它有很高的效能以及佇列過期的特性(過期按照插入的順序)
  • 文件在磁碟上存放位置也是按照插入順序來儲存的.
  • 使用 Capped Collection 不能刪除一個文件,可以使用 drop() 方法刪除 collection 所有的行。
  • 刪除之後,你必須顯式的重新建立這個 collection。

 

MongoDB  URI 協議:  

mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]



update() 方法

update() 方法用於更新已存在的文件。語法格式如下:

db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )

引數說明:

  • query : update的查詢條件,類似sql update查詢內where後面的。
  • update : update的物件和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set後面的
  • upsert : 可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
  • multi : 可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新
  • writeConcern :可選,丟擲異常的級別。

例子:
//更新title=ddddddddddd的所有記錄, title被更新為2323
db.col.update({title:"ddddddddddd"}, {$set:{title:"2323"}},{multi:true});

 

更多例項:

//只更新第一條記錄:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

//全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

//只新增第一條:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

//全部新增進去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

//全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

//只更新第一條記錄:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

 





 

save() 方法

save() 方法通過傳入的文件來替換已有文件。語法格式如下:

db.collection.save( <document>, { writeConcern: <document> } )

引數說明:

  • document : 文件資料。
  • writeConcern :可選,丟擲異常的級別。