標籤:
插入文檔:
db.foo.insert({ "key" : "value"});
使用insert插入一個資料,文檔中如果沒有_id 會自動給文檔增加_id.
batchInsert(Array) 批量插入,接受一個文檔數組做參數。
使用批量插入最大長度48M,如果過程中一個失敗,失敗之前會插入成功,之後全都失敗。
可以設定continueOnError 選項設定忽略錯誤並且繼續插入。
插入校正: 所有文檔必須都小於16M。
刪除文檔:
db.foo.remove();
上述命令會刪除foo集合中所有文檔,不會刪除集合本身,也不會刪除集合的元資訊。remove可以接受一個查詢文檔作為選擇性參數。
刪除是永久性的,不可以撤消,也不能恢複。
刪除文檔通常很快,但是要清空整個集合,使用drop直接刪除集合,再從空集合上重建各項索引會更快。
更新文檔:
db.user.update(參數1,參數2)
第一個參數查詢文檔,第二個參數修改器文檔。
常見錯誤,查問文檔匹配多個文檔,更新時第二個參數產生了重讀的_id 值,資料庫會拋出錯誤。任何文檔都不會更新。
使用_id查詢比使用隨機欄位速度快,因為通過_id建立的索引。
增加修改或刪除鍵時最好使用修改器,避免替換原文檔。
使用修改器:
$set : 用來指定一個欄位的值,如果不存在這個欄位,則建立它。 $set可以修改鍵的類型。 ----> $unset 刪除某個鍵。
$inc : 用來增加已有鍵的值,如果不存在就建立一個。 $inc 只能操作整型,長整型,或者雙精確度浮點型的值。 $inc 的值 必須為數字。
$push : 向以後數組末尾加入一個元素,如果沒有就建立一個新的數組。
$each : 遍曆數組, 可以配合$push 操作添加多個值。
$slice : 設定數組最大長度, $slice 的值必須是負整數。 $slice 和 $push 組合使用 可以保證數組不會超過設定的最大長度。
$sort : 清理資料
$ne : 保證數組內的元素不會重複。
$addToSet : 如果文檔不存在,就添加進去。
$pop : 可以從數組的任何一端刪除元素。 {"$pop" : {"key" : 1}} 從數組末尾刪除。 {"$pop" : {"key" : -1}} 從數組頭部刪除。
$pull : 基於特定條件來刪除元素。 $pull 會講所有匹配到的文檔刪除。
$ : 基於位置的數組修改器。 用來定位查詢文檔已經匹配的數組元素,並進行更新。
db.blog.update({ "comments.author" : "jhon"},
... {"$set" : {"comments.$.author" : "jim"}})
upsert : 如果沒找到符合更新條件的文檔,就以條件文檔和更新文檔,建立一個新的文檔。
預設情況,更新智能對合格第一個文檔執行操作。如果有多個文檔符合條件,只有第一個文檔回被更新。 如果匹配所有文檔需要將update 第四個參數設定為true。
findAndModify : 在一個造作中返回匹配的結果,並進行更新。
可選欄位:
findAndmodify : 字串,集合名。
query : 查詢文檔。
sort : 排序的結果條件。
update : 修改器文檔。
remove : 布爾類型,表示是否刪除文檔。
new : 布爾類型, 表示返回更新前的文檔還是更新後的文檔。預設是更新前的文檔。
fields : 文檔中需要返回的欄位。
upsert : 布爾類型, 當true是 表示這是一個upsert 預設為false。
建立、更新、刪除文檔。 --- Mongodb權威指南閱讀。