赞
踩
- 一、NoSQL数据库简介
- NoSQL数据库依然不可能离开传统的关系数据库(NotNoSQL数据库依然不可能离开传统的关系数据库(Not only SQL)
- MongoDB数据库之中与关系型数据库有如下的概念对应:
- 关系型数据库 NoSQL数据库
- 数据库 数据库(类似于MySQL)
- 表 集合
- 行 文档
- 列 成员
- 主键 Object ID(自动维护的)
-
- MongoDB数据库是发展最好的NoSQL数据库,因为它与Node.js捆绑在一起了。从事Node.js开发,一定要使用MongoDB。
- MongoDB之所以能够更好的发展也取决于:面向集合的存储过程,模式自由(无模式)、方便地进行数据的
存储扩充、支持索引、值短暂数据保留、具备完整的数据库状态监控、基于BSON应用
-
- 二、MongoDB启动
- 刚安装完成之后,严格来讲不能够在Windows下使用,需要为他配置path环境。
- 配置目录:D:\MongoDB\bin
- 新建一个文件夹,这个文件夹将保存所有的数据库信息。(db文件夹)
- MongoDB数据库的启动需要使用mongod.exe命令完成,可以设置端口号。
- 1.不设置端口号启动MongoDB服务:
- mongod --dbpath D:\MongoDB\db
- 当MongoDB服务启动之后,可以使用mongo命令连接数据库,连接后显示:
- MongoDB shell version: 3.2.10
- connecting to: test
- 查询数据库
- show databases;
- 只有local数据库,但是这个数据库不适用
- 此时,虽然实现了数据库的连接,但是没有实际意义。
- 若日后要通过程序访问数据库的话,要设端口号
-
- 2.设置端口号启动MongoDB服务:
- mongod --dbpath D:\MongoDB\db --port=27001
-
- 1、>启动的要配置一些参数端口号、是否启用用户验证、数据文件的位置等等
- 在D:\MongoDB目录下建立文件“mongodb.conf”
- #设置数据目录的路径
- dbpath = D:\MongoDB\db
- #设置日志信息的文件路径
- logpath = D:\MongoDB\log\mongodb.log
- #打开日志输出操作
- logappend = true
- #不使用验证登录
- noauth = true
- port = 27001
-
- 2、>重新启动MongoDB数据库服务
- 1、切换到admin数据库 use admin
- 2、关闭数据库 db.shutdownServer()
- 3、重新启动
- 用配置文件启动:
- mongod -f D:\MongoDB\mongodb.conf
-
- 3、>服务器已有端口号,不能直接用mongo命令(要指定端口号)
- C:\Users\YJDN>mongo --port=27001
- MongoDB shell version: 3.2.10
- connecting to: 127.0.0.1:27001/test
-
- 三、简单的数据库操作
- 1、使用数据库:use 数据库名; ------------此时不会创建数据库,只有在数据库里面保存数据之后才创建
- 2、查看所有数据库:show databases ; ------只有local数据库
- 3、创建集合:db.sreateCollection(“集合名”); -----数据库才真正存在
- 4、查看集合:show collections;
- 5、删除集合:db.集合名称.drop();
- 6、删除数据库:db.dropDatabae();----------删除当前所在的数据库,所以在删除之前,要切换到给数据库
-
-
- 四、关于ID的问题
- 在MongoDB集合中的每一行记录会自动生成一个“_id”:例如:"_id" : ObjectId("582fc4830f537b6768a8fa0e"
- ObjectId的组成:时间戳+机器码+PID+计数器
- 时间戳:前4 个字节是从标准纪元开始的时间戳,单位为秒。这会带来一些有用的属性。时间戳,与随后的.
- 5个字节组合起来,提供了秒级别的唯一性。
- 由于时间戳在前,这意味着ObjectId 大致会按照插入的顺序排列。这对于某些方面很有用,如将其作为索引提高效率,
- 但是这个是没有保证的,仅仅是“大致”。
- 这4 个字节也隐含了文档创建的时间。绝大多数驱动都会公开一个方法从ObjectId 获取这个信息。
- 因为使用的是当前时间,很多用户担心要对服务器进行时间同步。其实没有这个必要,因为时间戳的实际值并不重要,
- 只要其总是不停增加就好了(每秒一次)。
-
- 机器码:接下来的3 字节是所在主机的唯一标识符。通常是机器主机名的散列值。这样就可以确保不同主机生成不同的ObjectId,不产生冲突。
-
- PID:为了确保在同一台机器上并发的多个进程产生的ObjectId 是唯一的,接下来的两字节来自产生ObjectId 的进程标识符(PID)。
-
- 计数器:前9 字节保证了同一秒钟不同机器不同进程产生的ObjectId 是唯一的。后3 字节就是一个自动增加的计数器,
确保相同进程同一秒产生的ObjectId 也是不一样的。
- 同一秒钟最多允许每个进程拥有2563(16 777 216)个不同的ObjectId。
-
-
- 五、数据操作;
- 一些主要的函数(以dept为例):
- db.dept.remove(); 全部删除,括号内有条件则删除满足条件的数据。
- db.dept.find(); 查找全部数据(数量不多的情况下全部显示出来)
- db.dept.findOne(); 查找一条数据
- db.dept.update(数据);更新数据
- db.dept.insert(数据);插入数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。