MongoDB数据库启动与_id

一、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(数据);插入数据
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值