91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

monggodb學習過程--update

發布時間:2020-06-30 02:01:29 來源:網絡 閱讀:996 作者:王小酸 欄目:MongoDB數據庫

今天看書看到mongodb權威指南這本書對update這一篇進行了詳細詳解,因為知識點有點多,所以博客記錄一下,如果只是看我覺得明天就忘了。

更新文檔有兩種方式:

1,文檔替換  2,修改器替換(只是修改單個字段的內容)

關于update有哪些參數可以看一下幫助文檔

db> db.blog.update
function (query, obj, upsert, multi)
query:條件
obj:對象,更新的類容
upsert:判斷更新的條件是否存在
multi:默認情況下更新只對符合匹配條件的第一個文檔執行操作,要是這個為true,就是配置內容所以都更新

文檔替換

當前的數據類型是

wangaimin> db.test.findOne({"name":"bob"})
{
        "_id" : ObjectId("58e4b6410b8bd344936c8553"),
        "name" : "bob",
        "email" : "bob@email.com.cn",
        "content" : "nice post"
}

我需要變成這個樣子:

wangaimin> db.test.find({"name" : "bob"})
{ "_id" : ObjectId("58e4b6410b8bd344936c8553"), 
"name" : "bob", 
"comments" : { "email" : "bob@email.com.cn", "content" : "nice post" } 
}

操作步驟是:

wangaimin> var Test=db.test.findOne({"name":"bob"})
Test.comments={"email":Test.email,"content":Test.content}
delete Test.content
delete Test.email
db.test.update({"name" : "bob"},Test)
其實這個地方有一個坑,就是_id,如果你匹配中有多個name="bob",你就會報錯,_id必須是唯一的,所以可以也可以執行delete Test._id,這里沒有寫的很詳細,大家可以仔細想一下,如果不想是沒有記憶點

使用修改器:

1,$set修改器

修改之前:
wangaimin> db.test.find({"name" : "bob"})
{ "_id" : ObjectId("58e4b6410b8bd344936c8553"), "name" : "bob", "comments" : { "email" : "bob@email.com.cn", "content" : "nice post" } }

命令:db.test.update({"name" : "bob"},{$set:{"name":"BOB"}})
修改之后:
wangaimin> db.test.find({"name" : "BOB"})
{ "_id" : ObjectId("58e4b6410b8bd344936c8553"), "name" : "BOB", "comments" : { "email" : "bob@email.com.cn", "content" : "nice post" } }

修改內嵌文檔:
命令:wangaimin> db.test.update({"name" : "BOB"},{$set:{"comments.content":"change le"}})
修改之后:
wangaimin> db.test.find({"name" : "BOB"})
{ "_id" : ObjectId("58e4b6410b8bd344936c8553"), "name" : "BOB", "comments" : { "email" : "bob@email.com.cn", "content" : "change le" } }
2,$inc 增加和減少
注意:$inc 鍵的值必須是數字,不能為字符串,數組或其他非數字的值
db.test.find()
{ "_id" : ObjectId("58e4bb4b0b8bd344936c8554"), "number" : 10 }
wangaimin> db.test.update({"number":10},{$inc:{"number":3}})
wangaimin> db.test.find()
{ "_id" : ObjectId("58e4bb4b0b8bd344936c8554"), "number" : 13 }

3,$push添加數組

如果數組已經存在,$push會向已有的數組末尾加入一個元素,要是沒有就創建一個新的數組

 db.test.find()
{ "_id" : ObjectId("58e4bd5f0b8bd344936c8555"), "school" : "bd" }
db.test.update({"school":"bd"},{$push,{"list":{"name":"zhangsan","age":20}}})

db.test.find()
{ "_id" : ObjectId("58e4bd5f0b8bd344936c8555"), "school" : "bd", "list" : [ { "name" : "zhangsan", "age" : 20 } ] }

4,使用$each添加多個值

db.test.update({"school":"bd"},{$push:{"list":{$each:[{"name":"zhangsan","age":21},{"name":"zhangsan","age":22},{"name":"zhangsan","age":23},{"name":"zhangsan","age":24}]}}})

{ "_id" : ObjectId("58e4bd5f0b8bd344936c8555"), "school" : "bd", "list" : [ { "name" : "zhangsan", "age" : 20 }, { "name" : "zhangsan", "age" : 21 }, { "name" : "zhangsan", "age" : 22 }, { "name" : "zhangsan", "age" : 23 }, { "name" : "zhangsan", "age" : 24 } ] }

5,使用$slice限制個數,必須使用$each

使用$slice限制數組長度,如果$slice:-10,如果數組的長度小于10($push之后),那么所以的元素都會保留,如果數組的元素大于10,只有最后10個元素會報錯,重點$slice的值必須是負數

wangaimin> db.test.find({"name":"test"})
{ "_id" : ObjectId("58e4c1d30b8bd344936c8556"), "name" : "test", "id" : [ 1, 2, 3, 4, 5, 7, 7, 1, 2, 3, 4, 5, 5 ] }
wangaimin> db.test.update({"name":"test"},{$push:{"id":{$each:[1,2,3],$slice:-5}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
wangaimin> db.test.find({"name":"test"})
{ "_id" : ObjectId("58e4c1d30b8bd344936c8556"), "name" : "test", "id" : [ 5, 5, 1, 2, 3 ] }

6,將數組作為數據集使用($ne,$addToSet)

因為數組的元素是可以重復的,設置這個就是讓數組的元素不可以重復



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泽普县| 察隅县| 营山县| 东港市| 南靖县| 曲沃县| 北辰区| 南郑县| 丰城市| 健康| 广东省| 遂平县| 依安县| 太白县| 东台市| 青海省| 晋州市| 静安区| 长汀县| 钟祥市| 万盛区| 砚山县| 同心县| 思茅市| 子洲县| 庆城县| 凤翔县| 长垣县| 上犹县| 方正县| 香河县| 隆昌县| 青田县| 大埔区| 曲靖市| 定南县| 容城县| 汉源县| 孝义市| 古蔺县| 时尚|