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中的这些关键字叫做 修改器

inc

将查询结果加上某个值后保存,就是原有基础上在增加多少或减少多少

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

# 给名字为500ml人的年龄减去8
db.stutent.update({name:"500ml"},{$inc:{age:-8}})

set

更新属性没有就添加一条

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

unset

用来删除Key(field)的

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

push

针对 Array == list 操作

在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()

迭代追加

> 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中的多个元素

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

 

posted @ 2019-07-18 08:47  叫我大表哥  阅读(405)  评论(0编辑  收藏  举报