麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MongoDB > 正文

十天掌握MongoDB之二:MongoDB的增刪改操作

2020-03-14 13:23:29
字體:
來源:轉載
供稿:網友

添加文檔

db.foo.insert({"test" : "test"})

1、插入 時MongoDB會檢查文檔是否包含_id,如果文檔沒有指定_id,MongoDB會為其創建。

2、對于多個文檔,我們推薦批量操作,批量操作有如下優點:更少的連接次數、更少的信息頭檢測、對“待插入集合”的靈活控制;

3、默認情況下,插入文檔時MongoDB僅檢查傳入數據是否包含 _id 以及數據大小是否超過16MB( v1.8 - 為 4M ) ,除此之外不再做任何驗證;

4、MongoDB在插入數據時不執行任何代碼,因此沒有注入攻擊的風險;

刪除文檔

// 刪除全部文檔(清空集合)

db.foo.remove();

// 刪除指定記錄

db.foo.remove({"test" : "test"});

建議: 如果要清空集合,而且集合內包含了過多記錄時,不妨考慮使用 db.drop_collection(‘foo’) 命令直接刪除集合,然后使用 db.foo.ensureIndex() 命令重建索引 (之前的索引已經被 drop 掉了)。

更新文檔

// 原 文檔

{

"_ id" : ObjectId ( "4b2b9f67a1f631733d917a7a " ),

" name" : "joe " ,

" friends" : 32 ,

" enemies" : 2

}

// 期望 結果

{

"_ id" : ObjectId ( "4b2b9f67a1f631733d917a7a" ),

" username" : "joe" ,

" relationships" :

{

" friends" : 32 ,

" enemies" : 2

}

}

操作:

// 操作:首先查找記錄

var joe = db . users . findOne ({ "name" : " joe" });

// 修改記錄 屬性,很普通的 JavaScript 語法

joe . relationships = { "friends" : joe . friends , "enemies" :

joe . enemies };

joe . username = joe . name ;

delete joe . friends ;

delete joe . enemies ;

delete joe . name ;

// 更新

db . users . update ({ " name" : "joe" }, joe );

update有2個可選的bool參數,第1個表示是否開啟upsert模式(文檔存在時更新,不存在時自動創建);第2個表示是否開啟multi模式(默認情況下update操作只會更新第一個匹配到的文檔,如果開啟multi模式,則會更新所有匹配到的文檔)。

更新文檔 - UPSERT 模式

// 更新:指定第三個參數為 true 可以開啟 upsert 模式

db . users . update ({ " name" : "joe" }, joe, true );

在upsert模式下,如果找到匹配的記錄則更新之,否則如果找不到匹配記錄就會創建一條新的記錄。

更新文檔 - MULTI 模式

// 更新:指定第四個參數為 true 可以開啟 multi 模式

db . users . update ({ " name" : "joe" }, joe, true , true );

默認情況下update只會更新第一個匹配到的文檔,開啟multi模式,才會更新所有匹配到的文檔。

需要注意的是:MongoDB的update操作是替換整個文檔的,而不是對文檔做出局部修改。如果要單獨修改一個或多個鍵或值,請使用修改器。

更新文檔 - 修改器

修改器 說明 備注
$inc 增加或減少數字的值,鍵不存在時會自動創建 數字
$set 設置指定鍵的值,鍵不存在時會自動創建  
$unset $set的反操作,會刪除鍵及鍵值  
$push 將元素追加到數組末尾,數組不存在會自動創建 數組
$pushAll $push的批量操作版本 數組
$addToSet 同$pushAll,但會自動過濾重復元素 數組
$pop {$pop : {key : 1}}——從數組末尾移除元素
{$pop : {key : -1}}——從數組開頭移除原色
數組
$pull 從數組中移除所有匹配的元素 數組
$pullAll $pull的批量操作版本 數組
$rename 修改指定鍵的鍵名
$bit 對整形鍵值執行位操作“與”、“或”等 數字

定位操作符 - $

我們在更新文檔的時候,可以這樣寫:{ '$set': { foo.3.hits = 5 } }【對數組中下標是3的進行了修改】。問題是假設我們不知道元素的下標該怎么辦?這時候就可以使用$來定位查詢文檔已經匹配的元素。

// $inc 操作

db . blog . update (

{ " post" : post_id },

{ "$ inc" : { " comments. $ .votes" : 1 } }

);

// $set 操作

db . blog . update (

{ " comments.author" : "John" },

{ "$ set" : { " comments. $ .author" : "Jim" } }

);

/* 注意:定位符只會更新第 1 個匹配到的元素!!! */

MongoDB的增刪改操作都是瞬間完成的,無需等待執行結果,而且操作完成后不會再向客戶端反饋結果。顯而易見,速度快是它的優點,無法保證操作數據的完整性是它的缺點。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品久久久一二三区播放播放播放视频 | 国产九九九九 | 一级在线观看 | 久久午夜免费视频 | 91久久国产综合久久91精品网站 | 牛牛碰在线视频 | 欧美日韩在线播放 | 欧美乱码精品一区 | 国产99视频精品免视看9 | 日本视频在线免费观看 | 蜜桃视频在线免费播放 | 欧美一区二区三区久久精品视 | 精品一区二区三区免费毛片 | 毛片免费看电影 | 操操操日日日干干干 | 91成人一区 | 日韩大片在线永久观看视频网站免费 | 99最新地址 | 精品小视频 | 国产精品视频在线观看免费 | 欧美精品一区二区三区久久久 | 日本黄色免费片 | 中国hd高清xxxxvideo | 国产视频在线一区 | 91免费视频版| 国内自拍网址 | 日本在线播放一区二区 | 久久精品99国产国产精 | 久久久国产精品免费观看 | 国产久草视频在线 | 日韩黄色精品视频 | 成人三级视频网站 | 视频在线91 | 日韩视频精品一区 | 91精品动漫在线观看 | 久久精品中文字幕一区二区 | 把娇妻调教成暴露狂 | 亚洲一区二区三区在线免费观看 | 草操影院| 国产中文av在线 | 国产成人精品免高潮在线观看 |