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. 分布式服务框架dubbo原理解析

    alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产 ...

  2. vs的一个奇葩错误 : 未能找到任何适合于指定的区域性或非特定区域性的资源...

    摘要: VS2005下进行开发的时候遇到的问头:未能找到任何适合于指定的区域性或非特定区域性的资源.请确保在编译时已将“xxx.Form1.resources”正确嵌入或链接到程序集“xxx”,或者确 ...

  3. Linux常用命令(随时补充)

    1.系统 1.1.系统关闭.重启 1)关闭:shutdown -h now 2)重启:reboot.init 6 1.2.修改默认网卡 1)vi /etc/udev/rules.d/70-persis ...

  4. Python学习---django惰性机制

    Django惰性机制 所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用Quer ...

  5. nohup使用相关知识

    常规用法nohup ./abc.sh > abc.out &       --输出nohup的日志到abc.outnohup ./abc.sh &                 ...

  6. POJ 2528 Mayor's poster

    主要是参考了这个博客 地址戳这儿 题目大意:n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) .求出最后还能看 ...

  7. 020.2.5 Calender对象

    内容:日历对象获取时间,设置时间,日期偏移 通过工厂化获得对象.getInstance();get() 获取时间信息 Calendar c = Calendar.getInstance(); //获取 ...

  8. java内部类之成员内部类实例

    第一个是如何实现同时继承两个类 public class MultiExtendsDemo { public static void main(String[] args) { // TODO Aut ...

  9. 小白学CMD下运行MySQL

    将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) ...

  10. CF Gym 100637B Lunch(拆分子问题)

    题意:在一条狭窄的沼泽上有一列数量为n的连续荷叶,编号为1-n.有一只蛤,在边s号荷叶上,其他荷叶上苍蝇,哈可以跳到相邻的荷叶上,或者越过一片荷叶,跳完以后原来的荷叶会沉,目标是f荷叶,在跳到f荷叶之 ...