MongoDB

来源:互联网 发布:ubuntu当个人日常使用 编辑:程序博客网 时间:2024/06/14 00:02

  • MongoDB简介
  • MongoDB基础知识
    • 文档
    • 集合
    • 命名规范
    • 数据库
      • 数据库名称命名规则
  • MongoDB数据类型
    • 基本数据类型
  • 配置MongoDB
    • windows下安装及配置MongoDB
    • 使用shell脚本
      • shell的基本操作
      • 使用shell执行脚本
    • mongorcjs文件

MongoDB简介

  • MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
  • 在高负载的情况下,添加更多的节点,可以保证服务器性能。
  • MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

    MongoDB文档格式

MongoDB基础知识

文档

文档是MongoDB的核心概念,文档就是键值对的一个有序集。
例如:
{“greeting”:”Hello World!”}
其中greeting是键,Hello World!为值

  • MongoDB区分大小写

    MongoDB不但区分类型,而且区分大小写。
    例如:
    {“foo”:3},{“foo”,”3”}
    以上两个文档是不同的。

  • MongoDB文档不能有重复键。

  • MongoDB文档中键/值是有序的

集合

集合就是一组文档。如果将MongoDB中的一个文档比喻为关系型数据库中的一行,那么一个集合就相当于一张表。

  • 集合是动态模式的

    集合是动态模式的。这意味着一个集合里的文档可以是各式各样的。
    例如,下面两个文档可以存储在同一个集合里面:
    {“greeting”:”Hello World!”}
    {“foo”:5}

  • 子集合

    组织集合的一种惯例是使用”.”分隔不同命名空间的子集合。

命名规范

  • 集合名不能是空字符串(“”)。
  • 集合名不能包含\0字符(空字符),这个字符表示集合名的结束。
  • 集合名不能以”system.”开头,这是为系统集合保留的前缀。
  • 用户创建的集合不能在集合名中包含保留字符串”$”。

数据库

  • 1.在MongoDB中,多个文档组成集合,而多个集合可以组成数据库。一个MongoDB实例可以承载多个数据库,每个数据库拥有0个或者多个集合。每个数据库都有独立的权限,即便是在磁盘上,不同的数据库也放置在不同的文件中。
  • 2.如果想看链接指向的哪个数据库,在shell中输入db即可,如果要切换数据库的话,用use databaseName即可,如果没有该数据库则会创建。

数据库名称命名规则

  • 不能是空字符串(“”)。
  • 不能含有/、\、.、”、*、<、>、:、|、?、$、(一个空格)、\0(空字符)。基本上只能使用ASCII中的字母和数字
  • 数据库名区分大小写,数据库名应全部小写
  • 数据库名最多为64字节
  • admin、local、config为系统数据库

MongoDB数据类型

基本数据类型

mongo支持的数据类型有:

  • null,null用于表示空值或者不存在的字段,例:{“x”:null}
  • 布尔型,布尔型有两个值true和false,例:{“x”:true}
  • 数值,shell默认使用64位浮点数值,例:{“x”:3.14}或{“x”:3}
  • 对于整数值,可以使用NumberInt类(表示4字节带符号整数)或NumberLong类(表示8字符符号整数),例:{“x”:NumberInt(“3”)},{“x”:NumberLong(“3”)}
  • 字符串,UTF-8字符串都可以表示为字符串类型的数据,例:{“x”:”foobar”}
  • 日期,日期被存储为自新纪元以来经过的毫秒值,例:{“x”:new Date()},创建日期对象时,应使用new Date(),而非Date()。如果构造函数作为函数进行调用,返回的是日期的字符串表示,而非日期对象。
  • 正则表达式,查询时,使用正则表达式作为限定条件,例:{“x”:/foobar/1}
  • 数组,数据列表或数据集可以表示为数组,例:{“x”:[“a”,”b”,”c”]}
  • 内嵌文档,文档可以嵌套其他文档,例:{“x”:{“foo”:”bar”}}
  • 对象id,对象id是一个12字节的ID,是文档的唯一标识,例:{“x”:ObjectId()}
  • 二进制数据,二进制数据是一个任意字节得字符串
  • 代码,查询和文档中可以包括任意JavaScript代码,例:{“x”:function(){/*…*/}}

配置MongoDB

windows下安装及配置MongoDB

  • 1.下载MongoDB
    MongoDB下载地址
  • 2.配置MongoDB
    1.下载后解压之后如下图:
    MongoDB文档格式
    2.创建配置文件mongo.config,并将创建好的文件放到MongoDB解压后的目录中,内容如下:

    • dbpath=D:\Program Files\MongoDB\Server\3.2\data #数据库路径
    • logpath=D:\Program Files\MongoDB\Server\3.2\logs\mongo.log #日志输出文件路径
    • logappend=true #错误日志采用追加模式
    • journal=true #启用日志文件,默认启用
    • quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
    • port=27017 #端口号 默认为27017

    3.配置环境变量(如果需要)

  • 3.安装MongoDB服务
    mongod –config “D:\Program Files\MongoDB\Server\3.2\mongo.conf” –install –serviceName “MongoDB” #安装windows本地服务,其中-config 为”双-”
    mongod –config “D:\Program Files\MongoDB\Server\3.2\mongo.conf” –remove –serviceName “MongoDB” #删除windows本地服务,其中-config 为”双-”
    安装完成后在cmd中输入services.msc然后找到Mongo DB服务并启动

使用shell脚本

shell 是一个功能完备的Javascript解释器,可以运行任意Javascript程序。
打开cmd输入mongo,shell将自动链接到MongoDB服务器,必须保证mongod 已启动 (用浏览器访问http://127.0.0.1:27017/ 来验证mongodb服务是否启动)

shell的基本操作

  • 1.创建

    insert函数可将一个文档添加到集合。
    例如:
    post = {“title”:”My Blog Post”,”content”:”Here’s my blog post”,”date”:new Date()}
    db.blog.insert(post);

  • 2.查询

    db.blog.find() #查询所有文档
    db.blog.findOne() #查询一个文档

  • 3.更新

    post.comment = []
    db.blog.update({title:”My Blog Post”},post)

使用shell执行脚本

命令:mongo js文件地址 例:mongo script.js
在mongo shell运行中可以使用load函数来加载js文件,例:load(“script.js”),load函数无法解析”~”符号

.mongorc.js文件

这个文件将在shell启动时自动运行。在这个文件中可以做我们需要得事情。如果不需要加载该文件,用“mongo –norc”(双横杠)命令即可

例如:

      var no = function(){        print("Not on my watch.");      }      //禁止删除数据库      db.dropDatabase.prototype.drop = no;      //禁止删除集合      DBCollection.prototype.drop = no;      //禁止删除索引      DBCollection.prototype.dropIndex = no;

改变数据库函数时,要确保同时对db变量和DB原型进行改变。