Mongodb $關鍵字 $修改器


MongoDB $關鍵字

在前兩章中我們已經了解了簡單的增刪改查了

但是MongoDB中類似這樣的關鍵字有很多, $lt $gt $lte $gte 等等,

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

MongoDB $數字關鍵字

等於

:    在MongoDB中什么字段等於什么值其實就是 " : " 來搞定    比如 "name" : "lin"

$eq  和上邊查詢結果是一樣的

 

大於和大於等於

 大於    在MongoDB中的 大於 > 號 我們用 : $gt   比如  

大於等於    在MongoDB中的 大於等於 >= 號 我們用 : $gte

 

小於和小於等於

 小於    在MongoDB中的 小於 < 號 我們用 : $lt 

小於等於  在MongoDB中的 小於等於 <= 號 我們用 : $lte

 

這就是MongoDB中的運算符,是不是很類似我們使用的ORM中的運算符,是的。MongoDB的操作就是很類似ORM的

更新使用關鍵字

所有age小於20歲的修改為30了

 

MongoDB $查詢關鍵字

$or   

查詢條件中什么或者什么條件時候

db.collection.find({$or:[{"name":"cai"},{"name":"lin"}]}) 

查詢   name   是  "cai"  和  "lin"  的數據

$in   

查詢   "age" 滿足 在[28,29,30]中的數據

db.table1.find({"age":{$in:[28,29,30]}})    # 滿足一個條件即可

$all     

查詢數據中   hobby 滿足 所有列表的數據

 db.table1.find({hobby:{$all:[1,2,3,4]}})    #子集查詢

 

MongoDB $修改器

update修改器: $inc $set $unset $push $pull

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

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

 

1.$inc

Python中的  變量 += 1 , 將查詢到的結果 加上某一個值 然后保存

還是剛才Collection數據,我們來試一下$inc , 讓   lin 的   age  增加5歲

 

第一個 lin  的 age 成功的加上5

我想然他們 age  統一減少5呢?

 

2.$set

此前我們已經提到過 $set 的用法和特性(沒有就自動添加一條)了

 把 age是30的數據修改  name 為 ming

3.$unset

 用來刪除Key(field)的

查找  age 是30 的 數據  並且 刪除 age 字段

成功了! {$unset:{"age" : 1}} 就是刪除 "age" 這個 field 相當於 關系型數據庫中刪除了 字段

4.$push

它是用來對Array (list)數據類型進行 增加 新元素的,相當於我們大Python中 list.append() 方法

例子

創建table3

所有數據都添加一個test_lsit列表

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

 接下來我們就要隊列表進行添加了: 將 "name" 為 1 的Document 中"test_list" 添加一個 5

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

 

5.$pull

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

 接下來我們就要隊列表進行添加了: 將 "name" 為 2 的Document 中"test_list" 刪除一個 4

問題來了,如果 Array 數據類型中 如果有 多個 4會怎么樣?      會全部刪掉!

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

6.$pop

做個小例子: 刪除"name" 等於 3  test_list 的最后一個元素

 

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

是不是和大python中的列表的pop操作一樣呢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM