zoukankan      html  css  js  c++  java
  • 【mongodb】比较符及修改器

    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)更改数据
    复制代码

    返回值

    1
    2
    3
    # 创建一个Chats
        chat_id = MDB.Chats.insert_one({"user_list": [], "chat_list": []})
        print(chat_id.inserted_id,"inserted_id======="# 返回值的就是创建后的ObjectId对象
    # ObjectId("5d35b9887c22516fade818d9")
  • 相关阅读:
    实用的设计模式【一】---类设计法则
    vimium 使用心得
    记一次给部门做分享的心得
    centos7安装docker和docker compose【转】
    docker 部署 jenkins
    centos删除docker0虚拟网卡
    CentOS7查看和关闭防火墙
    .Net Core Autofac实现依赖注入
    【转】Docker基础
    【转】使用Docker+Jenkins自动构建部署
  • 原文地址:https://www.cnblogs.com/youxiu123/p/11493225.html
Copyright © 2011-2022 走看看