zoukankan      html  css  js  c++  java
  • MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB

     

     

    我们在之前的 MongoDB 之 手把手教你增删改查 MongoDB - 2 中提到过 $set 这个系统关键字,用来修改值的对吧

    但是MongoDB中类似这样的关键字有很多, $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

    又成功了 , {$inc:{"score":-20}}也来越喜欢英俊潇洒又不会翻车的自己了

    $inc 的用法是不是很简单啊,就是原有基础上在增加多少对吧

    2.$set : 此前我们已经提到过 $set 的用法和特性(没有就自动添加一条)了

    再做一个例子:把 "score" 为 100 分 的 "english_name" 赋值为 "LuffyCity"

    再把 "score" 为 20 分的 "score" 赋值为 59 分

    完美~

    3.$unset : 用来删除Key(field)的

    做一个小例子 : 刚才我们有一个新的"english_name" 这个field ,现在我们来删除它

    成功了! {$unset:{"english_name" : 1}} 就是删除 "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正好相反) 记住哦

     
  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/itzhangxuhui/p/11264645.html
Copyright © 2011-2022 走看看