1. 程式人生 > >MongoDB之 $關鍵字 及 $修改器 $set $inc $push $pull $pop MongoDB - 4

MongoDB之 $關鍵字 及 $修改器 $set $inc $push $pull $pop MongoDB - 4

MongoDB中類似$set 這樣的關鍵字有很多, $lt $gt $lte $gte 等等,這麼多我們也不方便記,這裡我們說說幾個比較常見的

一.查詢中常見的 等於 大於 小於 大於等於 小於等於

等於 : 在MongoDB中什麼欄位等於什麼值其實就是 " : " 來搞定 比如 "name" : "路飛學城"

大於 : 在MongoDB中的 大於 > 號 我們用 : $gt  比如 :  "score" : { $gt : 80 } 就是 得到 "score" 大於 80 的資料

小於 : 在MongoDB中的 小於 < 號 我們用 : $lt  比如 :  "score" : { $lt : 80 } 就是 得到 "score" 小於 80 的資料

大於等於 : 在MongoDB中的 大於等於 >= 號 我們用 : $gte  比如 :  "score" : { $gte : 80 } 就是 得到 "score" 大於等於 80 的資料

小於等於 : 在MongoDB中的 小於等於 <= 號 我們用 : $lte  比如 :  "score" : { $lte : 80 } 就是 得到 "score" 小於等於 80 的資料

這就是MongoDB中的運算子,是不是很類似我們使用的ORM中的運算子啊,沒錯,最開始的時候我們就已經說了,MongoDB的操作就是很類似ORM的

二.MongoDB中的那些個update修改器: $inc $set $unset $push $pull

在此前的update中,我們用過$set,對資料進行過更新,其實在update中還存在很多的$關鍵字,我們把update中的這些關鍵字叫做 修改器

修改器很多,這裡挑一些重要的來說一說:

1.$inc : Python中的  變數 += 1 , 將查詢到的結果 加上某一個值 然後儲存

還是剛才Collection資料,我們來試一下$inc , 讓不及格的 "路飛學城2" 變成 60 分

成功了 , {$inc:{"score":1}}的意思是,"score"的原有數值上面 +1,那我們再來實驗一次,把60改為20,這怎麼操作呢,其實可以理解為在 60 上加一個 -40

2.$set : 此前我們已經提到過 $set 的用法和特性(沒有就自動新增一條)了

再做一個例子:把 "score" 為 100 分 的 "english_name" 賦值為 "LuffyCity"

再把 "score" 為 20 分的 "score" 賦值為 59 分

3.$unset : 用來刪除Key(field)的

做一個小例子 : 剛才我們有一個新的"english_name" 這個field ,現在我們來刪除它

4. $push : 它是用來對Array (list)資料型別進行 增加 新元素的,相當於我們大Python中 list.append() 方法

做一個小例子 :首先我們要先對原有資料增加一個Array型別的field:

使用update $set 的方法只能為Document中的第一條新增

使用updateMany $set 的方法 可以為所有滿足條件的 Document 新增 "test_list" , 注意我這裡的條件為空 " {} " 就算是為空,也要寫上"{}" 記住記住記住

接下來我們就要隊列表進行添加了: 將 "score" 為 100 的Document 中"test_list" 新增一個 6

$push 是在 Array(list) 的尾端加入一個新的元素  {$push : {"test_list" : 6}}

 

5.$pull : 有了$push 對Array型別進行增加,就一定有辦法對其內部進行刪減,$pull 就是指定刪除Array中的某一個元素

做一個例子: 把我們剛才$push進去的 6 刪除掉

問題來了,如果 Array 資料型別中 如果有 多個 6 怎麼辦呢?

全部刪掉了.....

得出了一個結論,只要滿足條件,就會將Array中所有滿足條件的資料全部清除掉

6. $pop : 指定刪除Array中的第一個 或 最後一個 元素

做個小例子: 刪除"score" 等於 100 分  test_list 的最後一個元素

怎麼刪除第一個呢?

{$pop:{"test_list" : -1}}  -1 代表最前面, 1 代表最後邊 (這和我們大Python正好相反) 記住哦