建立 更新和刪除文件

2021-09-20 00:01:26 字數 2246 閱讀 9189

插入資料可以使用insert方法向目標集合插入乙個文件。

db.foo.insert()

批量插入使用batchinsert函式實現批量插入,它與insert函式非常像,只是它接受的是乙個文件陣列作為引數。

db.foo.batchinsert([, , ])

插入資料時,mongodb只對資料進行基本的檢查:

如果沒有"_id"字段,就自動增加乙個;

所有文件都必須小於16m。

db.foo.remove()

使用update來更新資料庫中的文件。

「$set」修改器

「$set」用來指定乙個欄位的值,如果這個欄位不存在,則可以建立它。

使用「$unset」則可以直接刪除這個欄位和相應的值。

刪除資料是永久性的,不能撤銷,也不能恢復。 刪除文件通常很快,但是如果要清空整個集合,那麼使用drop直接刪除集合會更快(然後在這個空集合上重建各項索引)。

增加和修改

「$inc」修改器用來增加已有的鍵的值,或者該鍵不存在那就建立乙個。對於更新分析資料,因果關係,投票或者其他由變化數值的地方,只用這個都會非常的方便。

"$inc"和「$set」的用法類似,就是專門來增加(和減少)數字的。「$inc」只能用於整形,長整形或雙精度浮點型的值。要是用在其他型別的資料上就會導致操作失敗,例如null,布林型以及數字構成的字串。

新增元素

「$push」會向已有的陣列末尾加入乙個元素,要是沒有就建立乙個新的陣列。

將陣列做俄日資料集來使用

你可能想將陣列作為資料集使用,保證陣列中的元素不會重複。可以在查詢文件中用「$ne」來實現。

刪除元素

有幾個從陣列中刪除元素的方法。若是把陣列看成是佇列或者棧,可以用「$pop」,這個修改器可以從陣列的任何一端刪除元素。} 從陣列末尾刪除乙個元素, } 則從頭部刪除。

「$pull」會將所有匹配的文件刪除,而不是只刪除乙個。

修改器的速度

有的修改器執行速度比較塊。$inc能就地修改,因為不需要改編文件的大小,只需要將鍵的值修改一下(對文件的大小的改變),所以非常的塊。而陣列修改器可能會改變文件的大小,就會慢一些。

將文件插入到mongodb中時,依次插入的文件在磁碟上的位置是相鄰的。因此如果乙個文件變大了,原先的位置就放不了這個文件,這個文件就會被移動到集合中的另乙個位置。

upsert

upsert是一種特殊的更新。要是沒有找到符合條件的更新的文件,就會以這個條件和更新文件為基礎建立乙個新的文件。upsert非常方便,不必預置集合,同一套**既可以用於建立新的文件又可以用於更新文件。

更新多個文件

預設情況下,更新只能對符合匹配條件的第乙個文件進行操作。要是有多個文件符合條件,只有第乙個文件會被更新,其他文件不會發生變化。要更新所有匹配的文件,可以將update的第4個引數設定為true。

返回被更新的文件

呼叫getlasterror僅能夠獲得關於更新的有限資訊,並不能返回被更新的文件。可以通過findandmodify命令得到被更新的文件。這對於操作佇列以及執行其他需要進行原子性取值和賦值。

findandmodify命令有很多可以使用的字段:

findandmodify 字串,集合名

query 查詢文件,用於檢索文件的條件

sort 排序結果的條件

update 修改器文件,用於對匹配的文件進行更新

remove 布林型別,表示是否刪除文件

new 布林型別,表示返回更新前的文件還是更新後的文件

fields 文件中需要返回的字段(可選)

upsert 布林型別,值為true時表示這是乙個upsert,預設值是false

寫入安全(write concern)是一種客戶端設定,用於控制寫入的安全級別。預設情況下,插入,刪除和更新都會是一直等待資料庫的響應,然後才會繼續執行。通常遇到錯誤時,客戶端會丟擲乙個異常。

兩種最基本的寫入安全機制是應答寫入和非應答寫入。應答寫入是預設的方式:資料庫會給出響應,告訴你寫入操作是否成功執行。非應答式寫入不返回任何響應。+

通常來說,應用程式應該使用應答式寫入。但是,對於一些不是特別重要的資料(比如日誌或者是批量載入資料),你可能不願意為了自己不關心的資料而等待資料庫的響應。這種情況下,可以使用非應答式寫入。

儘管非應答式寫入不返回資料庫錯誤,但是這並不代表應用程式不需要作錯誤檢查。如果嘗試向已經關閉的套接字(socket)執行寫入,或者寫入套接字時發生了錯誤,都會引起異常。

sql更新和刪除

update 語句 update 語句用於修改表中的資料。語法 update 表名稱 set 列名稱 新值 where 列名稱 某值 person lastname firstname address city gates bill xuanwumen 10 beijing wilson champ...

MySQL更新和刪除

更新和刪除的操作sql語句比較簡單,不過要注意使用update的時候,要注意weher條件的限制,下面的語句是只更新id為10005的email位址,如果不加where語句限制,那麼將表中所有的email更新為 elmer fudd.com 刪除某個列的值,設定為null即可。刪除行的sql語句,使...

更新和刪除資料

更新資料,即對錶中存在的資料進行修改。sql語句 update 語句 基本語法 update 表名 set 欄位名1 值1 欄位名2 值2,where 條件表示式 語法說明 欄位名1,欄位名2,用於指定更新的欄位名稱 值1,值2,用於表示字段更新的新資料。where條件表示式,可選引數,用於指定更新...