MongoDB:NoSQL数据库

  • MongoDB中的重要指示点

    • MongoDB中的三要素

      • 数据库
      • 集合
      • 文档
    • MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去记录的形式类似于json数据
    • MongoDB中集合中的数据不同于关系型数据库中的数据,MongoDB中文档结构可以不同,因此扩展性非常好

MongoDB的优点:易扩展、高性能、灵活的数据模型

MongoDB的缺点:数据重复存储,占用空间大

MongoDB启动

  • 命令行(终端)启动命令

    • mongod : 运行服务端
    • mongo: 启动客户端
  • 查看帮助命令,默认端口,日志位置

    • 查看帮助:mongod –help
    • 查看是否启动成功:ps ajx|grep mongod
    • 默认端⼝:27017
    • 日志的位置:/var/log/mongodb/mongod.log
  • mongodb客户端

    • 启动本地客户端:mongo
    • 查看帮助:mongo –help
    • 退出:exit或者ctrl+c

MongoDB的基础命令

操作数据库命令

  • 查看当前的数据库:db
  • 查看所有的数据库:show dbs /show databases
  • 切换数据库:use db_name删除当前的数据库:db.dropDatabase()
    • 切换到没有的数据库, 添加数据会自动创建
  • 显示当前数据库状态:db.stats()
  • 当前数据库版本:db.version()
  • 查看当前数据库的链接机器地址:db.getMongo()

操作集合的命令

  • 不手动创建集合:

    • 向不存在的集合中第⼀次加⼊数据时, 集合会被创建出来
  • 手动创建结合:

    创建用户:db.createUser({user:"laowang",pwd:"123456",roles:[{role:"userAdmin",db:"stu"}]})

    • db.createCollection(name,options)
    • db.createCollection("stu")
    • db.createCollection("sub", { capped : true, size : 10 } )
    • 参数capped: 默认值为false表示不设置上限,值为true表示设置上限
    • 参数size: 当capped值为true时, 需要指定此参数, 表示上限⼤⼩,单位为字节
      • 当⽂档达到上限时, 会将之前的数据覆盖, 最早添加的数据移出, 其余上移, 最后添加在最后一条
  • 显示当前所以用户:show  users
  • 删除用户:db.removeUser("userName")
  • 查看集合:show collections

  • 删除集合:db.集合名称.drop()

mongo中的数据类型

  • Object ID: ⽂档ID
  • String: 字符串, 最常⽤, 必须是有效的UTF-8
  • Boolean: 存储⼀个布尔值, true或false
  • Integer: 整数可以是32位或64位, 这取决于服务器
  • Double: 存储浮点值
  • Arrays: 数组或列表, 多个值存储到⼀个键
  • Object: ⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档
  • Null: 存储Null值
  • Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数
  • Date: 存储当前⽇期或时间的UNIX时间格式

注意事项:

  • 创建⽇期语句如下 :参数的格式为YYYY-MM-DD每个⽂档都有⼀个属性, 为_id, 保证每个⽂档的唯⼀性

    • new Date('2017-12-20')
  • 可以⾃⼰去设置_id插⼊⽂档,如果没有提供, 那么MongoDB为每个⽂档提供了⼀个独特的_id, 类型:objectID
  • objectID是⼀个12字节的⼗六进制数(了解):
    • 前4个字节为当前时间戳
    • 接下来3个字节的机器ID
    • 接下来的2个字节中MongoDB的服务进程id
    • 最后3个字节是简单的增量值

插入数据

  • db.集合名称.insert(document)插⼊⽂档时, 如果不指定_id参数, MongoDB会为⽂档分配⼀个唯⼀的ObjectId类型的_id

    • db.stu.insert({name:'gj',gender:1})
    • db.stu.insert({_id:"20170101",name:'gj',gender:1})
  • 插入单条指定为字典, 插入多条指定为列表

保存

  • db.集合名称.save(document)
  • 如果⽂档的_id已经存在则修改, 如果⽂档的_id不存在则添加
  • 区别于: insert如果存在直接报错

简单查询:

  • db.集合名称.find()

更新

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

    • 参数query:查询条件
    • 参数update:更新操作符
    • 参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新
  • 举例:注意:"multi update only works with $ operators" 更新全部,必须使用$set
    • db.stu.update({name:'hr'},{name:'mnc'}) 更新一条,没有更新的字段会丢弃.
    • db.stu.update({name:'hr'},{$set:{name:'hys'}}) 更新一条
    • db.stu.update({},{$set:{gender:0}},{multi:true}) 更新全部

删除

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

    • 参数query:可选,删除的⽂档的条件
    • 参数justOne:可选, 如果设为true或1, 则只删除⼀条, 默认false, 表示删除多条

MongoDB基础命令及操作的更多相关文章

  1. MongoDB 基础命令行

    本文专门介绍MongoDB的命令行操作.其实,这些操作在MongoDB官网提供的Quick Reference上都有,但是英文的,为了方便,这里将其稍微整理下,方便查阅. 登录和退出 mongo命令直 ...

  2. Linux 的基础命令的操作

    Linux 的基础命令的操作 显示日期和时间:date 显示日历:cal 简单好用的计算机:bc 1.显示日期: date +%Y/%m/%d 2018/09/01 date +%H:%M 14:26 ...

  3. Mac 下 Git 的基础命令行操作

    Mac 下 Git 的基础命令行操作 sudo apt-get install git-core //安装Git 用户配置 git config --global user.name "Yo ...

  4. docker基础命令和操作

    前言 之前在部署个人网站的时候,需要打包maven,在生产环境,需要使用到docker去做服务器和端口的守护. 于是在查阅了相关资料,学习了docker一些基本命令行操作,包括对镜像的查看,修改和添加 ...

  5. MongoDB基础命令

    MongoDB 入门命令 查看当前数据库 > show dbs admin 0.000GB config 0.000GB local 0.000GB > -- use databaseNa ...

  6. 2、链接数据库+mongodb基础命令行+小demo

    链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4 ...

  7. docker基础命令,常用操作

    docker基础命令 使用docker镜像 获取镜像 从docker registry获取镜像的命令是docker pull.命令格式是: docker pull [选项][docker regist ...

  8. MongoDB基础命令笔记

    一.创建数据库 use foobar 二.创建集合 db.persons.insert({name:"zhaomin",age:23}) 三.查找 db.persons.find( ...

  9. Git入门(安装及基础命令行操作)

    一.安装 1.Mac 在Mac中安装Git的方法不止一种.最简单的要数通过Xcode命令行工具.对于Mavericks(10.9)或更高版本的操作系统,当你第一次尝试在终端执行git命令时,系统会自动 ...

随机推荐

  1. PyCharm2018 安装及破解方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012278016/article/details/81738676 目录 1>. 安装 2& ...

  2. hibernate对象的三种状态及转换

    一.hibernate对象三种状态 Transient(瞬时状态):没有session管理,同时数据库没有对应记录 举例:new 出来的对象还没有被session管理,此时该对象处于Transient ...

  3. CentOS随笔 - 6.CentOS7安装Git服务器

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 版本管理当然是选择git..反正我是被svn坑怕了... 这次安装的是git 2.18.0 点击下载 准备安装 ...

  4. ORA-28001:口令已经失效

    Oracle11G创建用户时缺省密码过期限制是180天(即6个月),如果超过180天用户密码未做修改则该用户无法登录. 查看密码的有效期设置,LIMIT字段是密码有效天数. select * from ...

  5. 新特性之MAPI over HTTP \ 配置 MAPI over HTTP

    Exchange 2016 中的 MAPI over HTTP https://docs.microsoft.com/zh-cn/Exchange/clients/mapi-over-http/map ...

  6. Exchange 2007 前端 IIS 内存占用过高

    已经碰见了好几次,在Exchange2007的场景中,前端角色所在服务器的w3wp.exe进程总是占用大量内存,以至于触发反压组件,停止了正常的邮件流投递,造成业务中断. 终于下决心查一下到底问题问题 ...

  7. 解决Android sdk manager无法访问google服务器的问题

    开发Android应用,使用最广泛的开发工具应该就是ADT了,但是ADT默认只带了Android 4.3(API 18),如果需要安装其他版本的SDK,就需要启动Android SDK Manager ...

  8. 深入浅出SharePoint2010——请假系统实战

    一.需求分析文档 二.请假系统无代码解决方案 2.1 数据框架设计 2.2 权限设计 2.3 表单设计 2.4 工作流设计 2.5 门户主页设计 三.请假系统第三方解决方案(Nintex) 四.请假系 ...

  9. 在Django中使用Q()对象

    转载于:  http://www.smallerpig.com/1000.html 问题 一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >>& ...

  10. C/C++——存储

    关于各内存空间: 栈(stack):变量,数组.栈的大小是2M(也有的是1M),反正不大,一般递归写错了,没有出口,都会报错stack overflow. 全局区(静态区):全局变量.数组,静态变量. ...