MongoDB
数据库概念
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
常见的数据库
关系型数据库[a1] (sql):Access mySql SqlServer oracle db2等。
数据库----表-----行
什么是关系型数据库?
关系型数据库 以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。表与表之间的数据记录有关系。
非关系型数据库( NoSql ): MongoDB,Redis,HBase,CouchDB等。
数据库-----集合-----文档
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
分布式算法指的是讲一个大的任务分成多个小的任务,最后将小任务的结果拼接起来,
MongoDB 是非关系型数据库当中功能最丰富,最像关系型数据库的。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
· 面向集合存储,易存储对象类型的数据。
· 模式自由。
· 支持动态查询。
· 支持完全索引,包含内部对象。
· 支持查询。
· 支持复制和故障恢复。
· 使用高效的二进制数据存储,包括大型对象(如视频等)。
· 自动处理碎片,以支持云计算层次的扩展性
· 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
· 文件存储格式为BSON(一种JSON的扩展)
BSON是一种类似json的二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是**BSON有JSON没有的一些数据类型,**如Date和BinData类型。
安装并配置
1、下载安装
。下载安装包,一路next到底
4版本以上支持自动安装,并配置环境变量,以下3版本需要手动安装
2、配置
。默认的安装路径
C:\Program Files\MongoDB\Server\3.4\bin
。设置环境变量
为了在cmd窗口的任何路径下都能运行,需要先设置环境变量
右键我的电脑-----高级系统设置-----环境变量----系统变量(path)----将安装路径添加在最后。
。创建文件夹
在d盘建立一个文件夹mongodb,并且建立子目录db和log.
在log目录下建立一个文件MongoDB.log ,后缀为.log.
d:\mongodb\db、d:\mongodb\log, 分别用来存放数据库文件和数据库日志文件.
把mongodb文件夹的只读属性去掉。
。以管理员身份运行
执行以下命令:mongod --storageEngine mmapv1 --dbpath"d:\mongodb\db" --logpath "d:\mongodb\log\MongoDB.log"
执行后,就挂起了,需要另外开命令窗口测试是否启动成功
原来的cmd窗口不关闭,以管理员身份再开一个cmd窗口,输入mongo或者mongo.exe,出现有版本号等信息说明测试通过
。安装为Windows服务
当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,此时我们可以将MongoDB安装为windows服务
以管理员身份运行cmd
,进入bin文件夹,执行下列命令
mongod
--storageEngine mmapv1 --dbpath "d:\mongodb\db" --logpath
"d:\mongodb\log\MongoDB.log" --install --serviceName
"MongoDB"
。开启关闭删除进程
开启进程
NET START MongoDB
关闭服务
先 ctrl+c
net stop MongoDB
MongoDB常用命令
基本命令
help 查看帮助
show dbs 显示数据库列表
use dbname 数据库不存在,创建数据库,存在,切换到该数据库
show collections 显示数据库的集合
增加数据:
db.集合名.save({“name”:“laoli”})
创建一个集合并新增了一条数据
db.集合名.insert({“name”:“laoli”})
在集合中插入一条数据,如果没有这个集合,会自动创建这个集合
区别:若新增的主键存在insert()会报错,save()则更改原来的内容为新内容
注:_id为主键
删除数据:
文档:
db.集合名.remove({}) 删除集合下的所有数据
db.集合名.remove({“name”:“laoli”}) 删除当前name为laoli的数据
集合
db.集合名.drop()
db.runCommand({“drop”:“集合名”}) 删除集合
数据库
db.runCommand({“dropDatabase”:1}) 输出当前数据库
修改数据:
db.集合名.updata({“name”:“a”},{$set:{sex:“women”}},true,true)
查找名字是A的所有数据,将他的性别改为women,第三个参数表示匹配所有符合条件的数据,第四个参数表示修改所有匹配到的数据,true代表所有
查找数据:
db.集合名.find() 查找集合里所有的数据
db.集合名.findOne() 查找集合里所有的数据的第一条
db.集合名.find().pretty() 查找集合里所有的数据并格式化
高级条件查找:
db.集合名.find({“age”:{$gt:20}}) 查找年龄大于20的数据
db.集合名.find({“age”:{$gte:20}}) 查找年龄大于等于20的数据
db.集合名.find({“age”:{$lt:20}}) 查找年龄小于20的数据
db.集合名.find({“age”:{$gte:20}}) 查找年龄小于等于20的数据
db.集合名.find({“age”:{ g t : 20 , gt:20, gt:20,lt:30}}) 查找年龄大于20小于30的数据
db.集合名.find({},{_id:0,nm:1,star:1}) 查找所有的数据,不显示主键,显示nm和start