Mongo小结

Posted ppzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongo小结相关的知识,希望对你有一定的参考价值。

开启mongo的姿势:

  cd /usr/local/mongo/bin(mongo的文件目录的bin目录下)

  sudo ./mongod (开启mongo服务)

  再新开一个终端

  cd /usr/local/mongo/bin

  sudo ./mongo (进入mongo数据库)

数据库操作:

  use 数据库名字    使用/创建数据库

  show dbs        查看所有的数据库

  db.dropDatabase()    删除当前的数据库

  db          查看当前数据库

 

集合操作:

  • 不手动创建集合: 向不存在的集合中第?次加?数据时, 集合会被创建出来
  • 手动创建结合:
    • db.createCollection(name,options)
    • db.createCollection("stu")
    • db.createCollection("sub", { capped : true, size : 10 } )
    • 参数capped: 默认值为false表示不设置上限,值为true表示设置上限
    • 参数size: 当capped值为true时, 需要指定此参数, 表示上限??,当?档达到上限时, 会将之前的数据覆盖, 单位为字节
  • 查看集合:show collections
  • 删除集合:db.集合名称.drop()
  • 检查集合是否有上限: db.集合名.isCapped()

数据操作:

    db.集合名.insert()    db.user.insert({"name":"UZI", "age": "18" })

    db.集合名.save()     db.user.save()

    db.集合名.update(<query> ,<update>,{multi: <boolean>})     

      参数query:查询条件

      参数update:更新操作符

      参数multi:可选, 默认是false,表示只更新找到的第?条记录, 值为true表示把满?条件的?档全部更新

      db.user.update({"name":"UZI"},{"name":"MLXG"})           全文档进行覆盖更新
      db.user.update({"name":"UZI"},{$set:{"name":"hys"}})     指定键值更新操作
      db.user.update({},{$set:{gender:0}},{multi:true})    更新全部
  • 删 

    db.集合名.remove(<query>,{justOne: <boolean>})

      参数query:可选,删除的?档的条件

      参数justOne:可选, 如果设为true或1, 则只删除?条, 默认false, 表示删除多条

        db.user.remove({"name": "UZI"}, {justOne: <boolean>})

  • 基本查询

    ?法find(): 查询      

      db.集合名称.find({条件?档})

  

    ?法findOne():查询,只返回第?个

      db.集合名称.findOne({条件?档})

  

    ?法pretty(): 将结果格式化

      db.集合名称.find({条件?档}).pretty()

 

  • 条件查询

    比较查询 

    • 等于: 默认是等于判断, 没有运算符
    • ?于:$lt (less than)
    • ?于等于:$lte (less than equal)
    • ?于:$gt (greater than)
    • ?于等于:$gte
    • 不等于:$ne

      db.stu.find({ age:{ $gte:18 } })        查询年龄大于等于十八的

      db.stu.find({ time:{  $gte: ISODate("2018-05-11T13:58:51.122Z") } })  时间大于条件的结果

  • 逻辑运算查询
    • 逻辑与

       db.stu.find({ age:{ $gte:18 }, name:UZI }) 

    • 逻辑或   or:使?$or, 值为数组

      db.stu.find({ $or:[{age: { $gte:18 } }, { gender: true } ], name:UZI }) 查询年龄大于18或者性别为男,并且姓名为UZI的

  • 范围运算查询
    • 使?$in, $nin 判断数据是否在某个数组内

 

      db.stu.find({ age : { $in: [10,20,30] } })   查询年龄为10,20,30的结果

  •  正则表达式查询
    • 使?//或$regex编写正则表达式

       db.stu.find( {name: /^andy/ } )  查询姓名以andy开始的

       db.stu.find( { name: {$regex: ‘768$‘ } } )  查询姓名以768结尾的

  • skip 和 limit
    • limit( )   ?于读取指定数量的?档
    • skip( )   ?于跳过指定数量的?档

      db.stu.find().skip(10)  跳过前十条查询结果

      db.stu.find().limit(10)  查询十条结果

    • limit()和skip()同时使用,先使用skip在使用limit

      db.stu.find().skip(10).limit(10)  和 db.stu.find().limit(10).skip(10)  查询结果相同  先跳过前十条,在查询十条

  • 投影
    • 在查询到的返回结果中, 只选择必要的字段,参数为字段与值, 值为1表示显示, 值为0不显 特别注意: 对于_id列默认是显示的, 如果不显示需要明确设置为0

      db.stu.find( { }, {name:1,age:1 })   查询结果只显示name和age字段

  • 排序
    • ?法sort(), ?于对 集进?排序,参数1为升序排列 参数-1为降序排列

      db.stu.find().sort({ gender:1, age:-1 })

  • 统计个数
    • ?法count()?于统计结果集中?档条数

       db.stu.find().count()    统计结果的次数

       db.stu.count()        统计结果的次数

  • 去重
    • 方法distinct()用于对查询结果去重

      db.stu.distinct("hometown", {age:{$gte:18} })  对年龄大于18的结果以hometown去重

 

 

  

 

 

 

关闭mango的正确姿势:

  use admin

  db.shutdownServer()

以上是关于Mongo小结的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB使用小结:一些常用操作分享

MongoDB使用小结 一些常用操作分享转载

JAVA枚举小结

坑爹的ubuntu /bin/sh

MongoDB常用命令

CVE-2019-10758-Mongo-express-远程代码执行