开启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的

p.p1 { margin: 0; font: 12px Courier; color: rgba(0, 0, 0, 1); -webkit-text-stroke: #000000 }
span.s1 { font-kerning: none }

  • 范围运算查询

    • 使⽤$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()

mongoDB的备份与恢复

  mongo备份语法:mongodump -h dbhost -d dbname -o dbdirectory

  • -h:服务器地址,也可以指定端口号
  • -d:需要备份的数据库名称
  • -o:备份的数据存放位置,此目录中存放着备份出来的数据

  实例:mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak

  

  mongo恢复语法:mongorestore -h dbhost -d dbname --dir dbdirectory

  • -h:服务器地址
  • -d:需要恢复的数据库名称
  • --dir:备份的数据的位置

  实例:mongorestore -h 92.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1

mongoDB的导入和导出

  导出语法: mongoexport -h dbhost -d dbname -c colname -o filename --type json/csv -f field

  • -h: 服务器地址
  • -d: 数据库名
  • -c: 集合名
  • -o: 导出文件名
  • --type: 文件类型,默认json格式,可选数据类型json,csv
  • -f: 需要导出的字段,导出为json格式的数据时可以不指定导出哪些字段,默认全部,导出成csv文件是必须指定

  示例:mongoexport -h 192.168.196.128:27017 -d test2 -c col1 -o test1_col1 [--type csv -f name,age,number]

  导出语法: mongoimport -d dbname -c colname --file filename [--headerline --type json/csv -f field]

  • -h: 服务器地址
  • -d: 数据库名
  • -c: 集合名
  • -o: 导出文件名
  • --type: 文件类型,默认json格式,可选数据类型json,csv
  • -f: 需要导出的字段,导出为json格式的数据时可以不指定导出哪些字段,默认全部,导出成csv文件是必须指定

  示例:mongoexport -h 192.168.196.128:27017 -d test2 -c col1 -o test1_col1 --type csv -f name,age,number

Mongo小结的更多相关文章

  1. mongo 操作小结

    这里总结一下mongo常用操作语句,分享给大家和我自己~ 打印系统,数据库,集合的信息 db.stats()                                    打印数据库状态 db ...

  2. mongo数据库使用小结

    db.userId5555.aggregate({$unwind:"$tcjl"},{$match:{"_id":"0e549864-2a56-43c ...

  3. MongoDB使用小结:一些不常见的经验分享

    最近一年忙碌于数据处理相关的工作,跟MongoDB打交道极多,以下为实践过程中的Q&A,后续会不定期更新补充. 另有<MongoDB使用小结:一些常用操作分享>,注:本文完成时Mo ...

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

    本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程. MongoDB的使用之前也分享过一篇, ...

  5. mongo 学习笔记

    mysql语句 : ' ,,),(,,)   mongo语句: db.}}).limit() db."}) db.}}) 条件操作符1 mongodb中的条件操作符有: (>) 大于 ...

  6. Canal使用小结

    Canal使用小结 之前公司存在mysql数据同步mongo的需求,可以有多种实现方式,比如硬编码,发送消息等.公司选择的是Canal中间件,最近有空来研究下他的使用方式,对于mysql数据变更监听有 ...

  7. 数据库新秀 postgresql vs mongo 性能PK

    前几天看了一篇文章<High Performance JSON PostgreSQL vs. MongoDB> 发布在Percona Live Europe 2017 作者是<Dom ...

  8. mongo的身份验证和授权

    问题来源 刚装好的mongo,准备登陆进去测一把的,结果就给我报这个错,鄙人是新手,还不太清楚这个,现学一下~ Mongo的身份验证 在上一篇安装mongo的博客中(https://www.cnblo ...

  9. Mongo DB命令简介

    引言   最近在学习MongoDB 总结了一些命令及常用的东西做整理   常用目录文件介绍 mongod 数据库部署命令 mongo 连接mongodb数据库而使用的命令 mongoimport 导入 ...

随机推荐

  1. XJOI 7191 Genius ACM

    二分+倍增 题目 题目中的最大校验值应由数组排序后,取出最大值和最小值,次大值和次小值--进行做差平方取和 所以在加入一个新的数时,校验值是不会下降的 那么可以发现,校验值是单调递增的,所以可以用二分 ...

  2. c++11-17 模板核心知识(一)—— 函数模板

    1.1 定义函数模板 1.2 使用函数模板 1.3 两阶段翻译 Two-Phase Translation 1.3.1 模板的编译和链接问题 1.4 多模板参数 1.4.1 引入额外模板参数作为返回值 ...

  3. CSS ------ 样式学习 (一)

    CSS 指层叠样式表 (Cascading Style Sheets) :定义如何显示 HTML 元素(一套自定义的衣服) 语法: 由选择器和声明(可以是一条或多条)构成, 声明以大括号({})括起来 ...

  4. Flink的sink实战之四:自定义

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. Docker系列01—Docker 基础入门

    一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...

  6. 鸿蒙开发板外设控制 之 实现按键“按下事件”和“释放事件”的通用框架(V0.0.1)

    在帖子 <鸿蒙开发板外设控制>直播图文版(2020.10.28) 中我们提到过:"开发板上的按键也可以看作一种 GPIO 外设." 因此,要捕捉按键的状态(按下或释放) ...

  7. php post请求https

    <?php $url = 'https://www.xxx.com'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); c ...

  8. Spider--实战--selenium_12306

    # login12306_02 # 图像识别涉及到深度学习,这里直接将验证码识别任务发送到大佬的验证码解析地址,不过现在已经失效了,程序跑到这会报错. # 用户名和密码存储在本地工作目录中的 user ...

  9. CSS实现模拟百度分享侧边栏效果

    在<JS模拟百度分享侧边栏效果>一文中对于Div区块的运动通过JS实现了鼠标移入滑出显示,鼠标移出滑入隐藏的效果.其实在CSS3中通过transition属性就可以较为轻松实现. < ...

  10. 采用“传统”方式获取当前HttpContext

    我们知道"依赖注入"已经成为了.NET Core的基本编程模式,表示当前请求上下文的HttpContext可以通过注入的IHttpContextAccessor服务来提取.有时候我 ...