MongoDB-比較符及修改器

數學比較符

$lt        小於
$lte       小於等於
$gt        大於
$gte       大於等於
$eq        等於
$ne        不等於

全部數據

> db.stutent.find()                                                     })
{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40362"), "name" : "henry", "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

大於

db.stutent.find({age:{$gt:30}}) # 查詢結果
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }

大於等於

db.stutent.find({age:{$gte:30}}) # 查詢結果
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30 }

小於

db.stutent.find({age:{$lt:30}}) # 查詢結果
{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

小於等於

db.stutent.find({age:{$lt:30}}) # 查詢結果
{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

等於的兩種方式

> db.stutent.find({age:{$eq:30}})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30 }

> db.stutent.find({age:30})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30 }

不等於

> db.stutent.find({age:{$ne:30}})

{ "_id" : ObjectId("5d2ecd3d14ff51d814e40361"), "name" : "henry", "age" : 16, "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40362"), "name" : "henry", "sex" : "female", "hobby" : "喝酒" }
{ "_id" : ObjectId("5d2eeb8414ff51d814e40363"), "name" : "egon", "age" : 18 }
{ "_id" : ObjectId("5d2eec9314ff51d814e40364"), "name" : "alex", "age" : 50 }
{ "_id" : ObjectId("5d2eee1314ff51d814e40366"), "name" : "500ml", "age" : 10 }

修改器

在此前的update中,咱們用過$set,對數據進行過更新,其實在update中還存在不少的$關鍵字,咱們把update中的這些關鍵字叫作 修改器python

inc

將查詢結果加上某個值後保存,就是原有基礎上在增長多少或減小多少app

# 給名字爲500ml人的年齡加上8
db.stutent.update({name:"500ml"},{$inc:{age:+8}})

# 給名字爲500ml人的年齡減去8
db.stutent.update({name:"500ml"},{$inc:{age:-8}})

set

更新屬性沒有就添加一條spa

# 將名字爲500ml的人名字改爲大呲花
db.stutent.update({name:"500ml"},{$set:{name:"大呲花"}})

unset

用來刪除Key(field)的3d

# 刪除名字henry中的sex爲female的字段 
db.stutent.update({name:"henry"},{$unset:{sex:"female"}})

push

針對 Array == list 操做code

在Array的最後一個位置中增長數據對象

$push == append()

# 給小漩渦添加個字段,屬性爲列表
db.stutent.update({name:"小漩渦"},{$set:{test_list:[1,2,3,4,5]}})

{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5 ] }

# 能夠爲全部知足條件的 Document 添加 "test_list"
db.stutent.update({},{$set:{test_list:[1,2,3,4,5]}})
# 注意我這裏的條件爲空 " {} " 就算是爲空,也要寫上"{}" 記住記住記住

# --------------------------------------------------------------------------
# 用push給test_list中追加元素
db.stutent.update({name:"小漩渦"},{$push:{test_list:1000}})

{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ] }

pushAll

$pushAll == extend()

迭代追加blog

> db.stutent.find({name:"小漩渦"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "hobby" : [ "喝酒", "燙頭" ] }

> db.stutent.update({name:"小漩渦"},{$pushAll:{hobby:[1,2,3,4,5]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩渦"})                              }})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "hobby" : [ "喝酒", "燙頭", 1, 2, 3, 4, 5 ] }

pull

$pull == remove()

刪除Array中的指定元素索引

db.stu.update({name:"小黑"},{ $pull: { hoobys:"渣男" } })

pullAll

刪除Array中的多個元素rem

> db.stutent.find({name:"小漩渦"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "hobby" : [ "喝酒", "燙頭", 1, 2, 3, 4, 5 ] }

> db.stutent.update({name:"小漩渦"},{$pullAll:{hobby:[1,2,3,4,5]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩渦"}) 
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "hobby" : [ "喝酒", "燙頭" ] }

pop

$pop約等於pop()數學

刪除Array中的第一個或者最後一個元素 正數是倒序刪除 負數是正序刪除

> db.stutent.find({name:"小漩渦"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ], "hobby" : [ "喝酒", "燙頭" ] }

> db.stutent.update({name:"小漩渦"},{$pop:{hobby:-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩渦"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ], "hobby" : [ "燙頭" ] }

$ 字符特殊用法

在MongoDB中有一個很是神奇的符號 "$"

"$"  在 update 中 加上關鍵字 就 變成了 修改器

其實 "$" 字符 獨立出現也是有意義的 , 我起名叫作代指符

存儲當前(Array)符合條件的元素下標索引 ,只能存儲最外層的 索引位置 

> db.stutent.find({name:"小漩渦"})
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "test_list" : [ 1, 2, 3, 4, 5, 1000 ], "hobby" : [ "燙頭" ] }

# 將test_list中的5改爲五
# "test_list.$"必須加引號
> db.stutent.update({test_list:5},{$set:{"test_list.$":"五"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stutent.find({name:"小漩渦"})                         ) )
{ "_id" : ObjectId("5d2eee1314ff51d814e40365"), "name" : "小漩渦", "age" : 30, "test_list" : [ 1, 2, 3, 4, "", 1000 ], "hobby" : [ "燙頭" ] }

# 先查詢到hobbys中5的 位置(4) ,將位置存儲在 $==(4) 字符中 而後根據$字符的位置(4)更改數據

返回值

# 建立一個Chats
    chat_id = MDB.Chats.insert_one({"user_list": [], "chat_list": []})
    print(chat_id.inserted_id,"inserted_id=======") # 返回值的就是建立後的ObjectId對象
# ObjectId("5d35b9887c22516fade818d9")
相關文章
相關標籤/搜索