MongoDB(课时18 修改器)
3.4.3.2 修改器(原子操作)
對MongoDB數(shù)據(jù)庫而言,數(shù)據(jù)的修改會牽扯到內(nèi)容的變更,結(jié)構(gòu)的變更(包含數(shù)組),所以在MongoDB在設(shè)計的時候就提供有一系列的修改器的應(yīng)用,那么像之前使用的“$set”就是一種修改器。
1. $inc:主要針對于一個數(shù)字字段,增加某個數(shù)字字段的數(shù)據(jù)內(nèi)容;
語法:{"$inc" : {"成員" : 內(nèi)容}}
范例:將所有年齡為21歲的學(xué)生成績一律減少30,年齡加1
db.students.update({"age" : 21}, {"$inc" : {"score" : -30, "age" : 1}}) # 默認只改一條數(shù)據(jù)
db.students.update({"age" : 21}, {"$inc" : {"score" : -30, "age" : 1}}, false, true)
2. $set:進行內(nèi)容的重新設(shè)置
語法:{"$set" : {"成員" : "新內(nèi)容"}}
范例:將年齡是20歲的人的成績修改為89
db.students.update({"age" : 20}, {"$set" : {"score" : 89}})
3. $unset:刪除某個成員的內(nèi)容
語法:{"$unset" : {"成員" : 1}}
范例:刪除“張三”的年齡與成績信息
db.students.update({"name" : "張三"}, {"$unset" : {"age" : 1, "score" : 1}})
執(zhí)行之后指定的成員內(nèi)容就消失了,相當(dāng)于修改了表結(jié)構(gòu),而這次換成了集合結(jié)構(gòu)。
4. $push:相當(dāng)于將內(nèi)容追加到指定的成員之中(輸出結(jié)果為數(shù)組形式)
語法:{"$push" : {成員 : value}}
范例:向“李四”添加“美術(shù)”課程
db.students.update({"name" : "李四"}, {"$push" : {"course" : "美術(shù)"}})
范例:向“張三”添加課程信息(以數(shù)組形式添加)
db.students.update({"name" : "張三"}, {"$push" : {"course" : ["語文", "數(shù)學(xué)"]}})
$push就是進行數(shù)組數(shù)據(jù)的添加操作使用的,如果沒數(shù)組則進行一個新數(shù)組的創(chuàng)建,如果有則進行內(nèi)容的追加。
5. $pushAll:一次追加多個內(nèi)容到數(shù)組里面
語法:{"$pushAll" : {成員 : 數(shù)組內(nèi)容}}
范例:向“王五”的信息里面添加多個課程內(nèi)容
db.students.update({"name" : "王五"}, {"$pushAll" : {"course" : ["美術(shù)", "音樂", "素描"]}})
6. $addToSet:向數(shù)組里增加一個新內(nèi)容,只有這個內(nèi)容不存在的時候才會增加
語法:{"$addToSet" : {成員 : 內(nèi)容}}
范例:向“王五”中增加“跳舞”
db.students.update({"name" : "王五"}, {"$addToSet" : {"course" :?"美術(shù)"}})
因為美術(shù)不是新內(nèi)容,所以沒變化。
db.students.update({"name" : "王五"}, {"$addToSet" : {"course" :?"跳舞"}})
db.students.update({"name" : "王五"}, {"$addToSet" : {"course" : ["美術(shù)", "音樂", "素描", "跳舞"]}})
7. $pop:刪除數(shù)組內(nèi)第一個或最后一個數(shù)據(jù)
語法:{"$pop" : {成員 : 內(nèi)容}} # 內(nèi)容設(shè)置為-1表示刪除第一個,設(shè)置為1表示刪除最后一個
范例:刪除王五的第一個課程
db.students.update({"name" : "王五"}, {"$pop" : {"course" : -1}})
范例:刪除王五的最后一個課程
?db.students.update({"name" : "王五"}, {"$pop" : {"course" : 1}})
8. $pull:從數(shù)組內(nèi)刪除一個指定內(nèi)容的數(shù)據(jù)
語法:{"$pull" : {成員 : 數(shù)據(jù)}} # 語法中的數(shù)據(jù)是用來比對的,是此數(shù)據(jù)則刪除,不是則沒變化
范例:刪除王五的"跳舞"課程
db.students.update({"name" : "王五"}, {"$pull" : {"course" : "跳舞"}})
注意:$pop可一次性增加多個課程,但$pull只能一次性刪除一個課程,一次性刪除多個課程必須用$pullAll。
?
?
9. $pullAll:一次性刪除多個內(nèi)容
語法:{"$pullAll" : {成員 : [數(shù)據(jù), 數(shù)據(jù), ...]}}
范例:刪除"谷大神 - A"中的三門課程
db.students.update({"name" : "谷大神 - A"}, {"$pullAll" : {"course" : ["語文", "英語", "政治"]}})
10. $rename:為成員名稱重命名
語法:{"$rename" : {舊的成員名稱 : 新的成員名稱}}
范例:將“張三”name成員名稱修改為“姓名”
db.students.update({"name" : "張三"}, {"$rename" : {"name" : "姓名"}})
?
轉(zhuǎn)載于:https://www.cnblogs.com/keye/p/7979064.html
總結(jié)
以上是生活随笔為你收集整理的MongoDB(课时18 修改器)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我对对象和引用的理解
- 下一篇: 电子商务javaweb b2b b2c