真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

monggodb學(xué)習(xí)過程--update

今天看書看到MongoDB權(quán)威指南這本書對(duì)update這一篇進(jìn)行了詳細(xì)詳解,因?yàn)橹R(shí)點(diǎn)有點(diǎn)多,所以博客記錄一下,如果只是看我覺得明天就忘了。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鳳翔免費(fèi)建站歡迎大家使用!

更新文檔有兩種方式:

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

關(guān)于update有哪些參數(shù)可以看一下幫助文檔

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

文檔替換

當(dāng)前的數(shù)據(jù)類型是

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

我需要變成這個(gè)樣子:

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)
其實(shí)這個(gè)地方有一個(gè)坑,就是_id,如果你匹配中有多個(gè)name="bob",你就會(huì)報(bào)錯(cuò),_id必須是唯一的,所以可以也可以執(zhí)行delete Test._id,這里沒有寫的很詳細(xì),大家可以仔細(xì)想一下,如果不想是沒有記憶點(diǎn)

使用修改器:

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" } }

修改內(nèi)嵌文檔:
命令: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 鍵的值必須是數(shù)字,不能為字符串,數(shù)組或其他非數(shù)字的值
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添加數(shù)組

如果數(shù)組已經(jīng)存在,$push會(huì)向已有的數(shù)組末尾加入一個(gè)元素,要是沒有就創(chuàng)建一個(gè)新的數(shù)組

 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添加多個(gè)值

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限制個(gè)數(shù),必須使用$each

使用$slice限制數(shù)組長(zhǎng)度,如果$slice:-10,如果數(shù)組的長(zhǎng)度小于10($push之后),那么所以的元素都會(huì)保留,如果數(shù)組的元素大于10,只有最后10個(gè)元素會(huì)報(bào)錯(cuò),重點(diǎn)$slice的值必須是負(fù)數(shù)

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,將數(shù)組作為數(shù)據(jù)集使用($ne,$addToSet)

因?yàn)閿?shù)組的元素是可以重復(fù)的,設(shè)置這個(gè)就是讓數(shù)組的元素不可以重復(fù)


分享標(biāo)題:monggodb學(xué)習(xí)過程--update
文章路徑:http://weahome.cn/article/joehjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部