MongoDB 筆記 1
阿新 • • 發佈:2018-12-20
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 的文件不需要設定相同的欄位,並且相同的欄位不需要相同的資料型別
如:
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 :可選,丟擲異常的級別。