MongoDB 的$关键字查询 和 $修改器 $set $inc
2018-10-17 本文已影响0人
Mr_Du_Biao
一、比较查询
- 等于 : 在MongoDB中什么字段等于什么值其实就是 " : " 来搞定 比如 "name" : "路飞学城" image.png
- 大于 : 在MongoDB中的 大于 > 号 我们用 : $gt 比如 : "score" : { $gt : 80 } 就是 得到 "score" 大于 80 的数据 image.png
- 小于 : 在MongoDB中的 小于 < 号 我们用 :$lt 比如 : "score" : { $lt : 80 } 就是 得到 "score" 小于 80 的数据 image.png
- 大于等于 : 在MongoDB中的 大于等于 >= 号 我们用 : $gte 比如 : "score" : { $gte : 80 } 就是 得到 "score" 大于等于 80 的数据 image.png
- 小于等于 : 在MongoDB中的 小于等于 <= 号 我们用 : $lte 比如 : "score" : { $lte : 80 } 就是 得到 "score" 小于等于 80 的数据 image.png
- $all 满足所有元素的数据 $all:[1,3,2]
- $in 满足其中一个元素的数据 $in:[1,2,5,6]
- $or 满足其中一个字段的数据 $or:[{name:1},{age:2}]
二、MongoDB中的update修改器: $inc $set $unset $push $pull
- 1.$inc : Python中的 变量 += 1 , 将查询到的结果 加上某一个值 然后保存
image.png
- 还是刚才Collection数据,我们来试一下$inc , 让不及格的 "路飞学城2" 变成 60 分 image.png
- 成功了 , {$inc:{"score":1}}的意思是,"score"的原有数值上面 +1,那我们再来实验一次,把60改为20,这怎么操作呢,其实可以理解为在 60 上加一个 -40 image.png
- 2.$set : 此前我们已经提到过 $set 的用法和特性(没有就自动添加一条)了
- 把 "score" 为 20 分的 "score" 赋值为 59 分 image.png
- 3.$unset : 用来删除Key(field)的
- {$unset:{"english_name" : 1}} 就是删除 "english_name" 这个 field 相当于 关系型数据库中删除了 字段 image.png
-
- $push : 它是用来对Array (list)数据类型进行 增加 新元素的,相当于我们大Python中 list.append() 方法
- 做一个小例子 :首先我们要先对原有数据增加一个Array类型的field: image.png
- 使用update $set 的方法只能为Document中的第一条添加 image.png
- 使用updateMany $set 的方法 可以为所有满足条件的 Document 添加 "test_list" , 注意我这里的条件为空 " {} " 就算是为空,也要写上"{}"
- $push 是在 Array(list) 的尾端加入一个新的元素 {$push : {"test_list" : 6}} image.png
- 5、$pull 就是指定删除Array中的某一个元素
- 把我们刚才$push进去的 6 删除掉 image.png
- 问题来了,如果 Array 数据类型中 如果有 多个 6 怎么办呢? image.png
- 得出了一个结论,只要满足条件,就会将Array中所有满足条件的数据全部清除掉
-
- $pop : 指定删除Array中的第一个 或 最后一个 元素
- 做个小例子: 删除"score" 等于 100 分 test_list 的最后一个元素 image.png
- 怎么删除第一个呢? image.png
- {$pop:{"test_list" : -1}} -1 代表最前面, 1 代表最后边 (这和我们大Python正好相反) 记住哦
三、MongoDB 之 "$" 的奇妙用法
"" 字符 独立出现也是有意义的 , 我起名叫做代指符
- 现在把 "score": 100 的 test_list 里面的 2 改为 9 image.png image.png
-
{$set :{"test_list.0" : 9}} 这样就是对应 Array 中的下标进行修改了 "test_list.下标"
-
$ 字符 在语句中代表了什么呢? 下标,位置
- 解释一下: 首先我们查询一下db.Oldboy.findOne({"score":100,"test_list":3}) 返回 给我们满足条件的数据对吧 image.png
-
那么 如果 我们 使用 update的话, 满足条件的数据下标位置就会传递到 $ 字符中,在我们更新操作的时候就相当于 对这个位置 的元素进行操作