MongoDB是开源,高性能的NoSQL数据库;支持索引、集群、复制和故障转移、各种语言的驱动程序丰富;高伸缩性;
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
安装MongoDB
点击去下载
提示:安装目录里面不要带携带中文,不要携带中文,不要携带中文
下载对应版本的msi文件,下载完成直接点击安装,这里有一个地方需要注意
这个对勾可以去掉,这个是MongoDB自带的一个可视化工具,个人觉得不怎么好用,安装过程中现下载的,如果网络稍微差一点,可能光安装个mongodb,一个小时过去了
丫,安装出问题了,围观中~~
直接点击Ignore(忽略),然后进入mongodb安装目录,在data文件夹下新建db目录,data下创建log目录
进入安装目录,bin目录
右键–>在此处打开powershell或命令行窗口,我的是powershell窗口点击去更改
进入命令行窗口后键入命令:
mongod -dbpath d:\'这是你安装mongoDB的文件夹,根据你自己的命名来写'\data\db
如果出问题,看截图,看消息
换成’./'开头就好了
注意到这里可能有的人看到这块儿没有自动结束以为这是报错,其实不是的,现在打开的这个命令行窗口不要关闭,重新进入mongo安装目录的bin目录,右键在此处运行命令行窗口,输入mongo命令,就会发现你可以进去了,并且mongo数据库的操作指令都可以用了
或许还有的会出现另外一个错误提示:连接失败的错误
Error: couldn’t connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145
exception: connect failed
不要急,还是会有解决办法的:
删除data\db\文件下面的mongo.lock文件
重启服务–>OK
我的指令去全用的./开头的,可能是因为我没有配置环境变量的事儿,先配置下环境变量再试试
环境变量简单带过吧,将mongodb安装目录的bin目录所在路径配置到系统的环境变量PATH里就行了
环境变量配置成功了,查看版本 mongo --version成功了,但是命令行启动服务出现问题了
以管理员方式运行命令行窗口再试试
还是不行,靠,惹毛我了,删除配置文件,删除MongoDB服务相关所有东西
sc delete MongoDB
手动输入试试
mongod --dbpath "D:\software\MongoDB\data\db" --logpath "D:\software\MongoDB\data\log\db.log" --install --serviceName "MongoDB"
我知道了,我的配置文件和之前输入的./mongod --dbpath那块儿已经安装好了MongoDB的服务,配置文件那块儿又用config去install,服务已经有了,再install是会冲突的,比如之前就有MongoDB服务了再安装注册MongoDB服务???,反正服务是启不动了,接下来直接暴力一点,删除MongoDB服务和之前的命令等记录直接清零,之前定义过的任何东西都给删除掉,手动键入配置,再次试了一下,OK,成功啦
重新进入一下验证看看是否成功了???
哦了,好难啊,接下来就开始操作吧
哦对了,还没找个可视化工具呢,有可视化工具会轻松一点
好像studio3T和robo3T用的人挺多的,咱也去下载一个
这个网站连接的有点慢啊,网站性能有待优化啊~~当然,也可能是我网速的问题,但是我网速杠杠滴啊,也许这一会儿网速卡吧-.-!!!
?下载mongodb的时候我的下载速度可以飙到2M,下载这个玩意儿才这么点儿,逗我玩呢一万个食草动物奔腾而过
安装好了studio3T,我选择的是shell界面,个人感觉这样对练习写SQL语句可能会有点帮助哈
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
MongoDB 的库也就是集合的意思,MongoDB一般称之为集合
查看集合
show dbs 查看所有库,在这里,没有记录的库貌似是不显示的,比如test
use book(库名) 这里没有会自动创建,但是查看是查看不出来的,因为没记录
db 查看当前所在的数据库
看,我已经在book里面了,但是show dbs还是没有book,因为book是个空的-.-
用可视化工具的话直接create database就行了,我就不说了
删除集合
db.dropDatabase 删除当前选中的集合,如果没有选中,则默认删除test集合
插入和简单查询
db.book.insert({}) 使用db.集合名.insert(文档)来将文档的数据写入集合中,文档的格式为JSON。而所有存储在集合中的数据都是BSON格式。BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
show collections 查看的是自己创建的除了系统自带的那些有记录的集合
db.book.find() 查看所有的记录数
db.getCollection('book').find({name:'Tom'}) 根据条件不同来查找数据
这里有一个save方法,同instert一样也是插入数据的,但是save和insert不同的是insert插入数据的时候_id如果存在会报错,而save方法插入数据的时候_id存在则会修改,save相对比较智能一点
这就是save和insert的区别,清楚明了
MongoDB支持javascript脚本:
如:
for(var i=1;i<=10;i++)db.book.save({_id:i,name:'book'+i,age:20+i});
查询所有:db.集合名.find() 这个用过好多次了,都看到了效果,看看其他的
多条件查询:
db.book.find({name:'book1',age:21})
里面的条件,类型一定要跟集合里面存储的值类型一致,否则就跟我这样,是查不出来的
db.集合.findOne(条件) 只查询第一条
db.book.find().limit(数量) 查询前几条
db.表名.find().skip(数量) skip是跳过指定数量的意思
$gt,$lt,$gte,$lte 大于/小于/大于等于/小于等于
$ne 不等于
db.book.find({age:{$ge:25,$lt:28}}) 大于25并且小于28
in/nin in 和 nin 一个是在*范围,一个是不在*范围,两个相反
or 所有条件的一个集合
db.book.find({name:{$in:['book1','book2']}})
db.book.find({
$or:[
{age:{$lt:25}},
{age:{$gt:28}}
]
})
==正则表达式查询==
db.book.find({name:/book[1-3]/i}) 里边可以直接用正则表达式
使用正则匹配的方式和我们的javascript的正则匹配是一模一样的语法
现在向里边插入另外的数据准备做其他条件查询,现在book集合里面的数据如下:
for(var i=1;i<=10;i++) db.book.save({_id:i,name:['book'+i,'book'+(i+1),'book'+(i+2)],age:22+i})
all:该操作符的含义是使用多个元素来模糊匹配数组,也就是说,如果多个数组里面包含all 匹配的内容的话,那么该数组都会被匹配出来。(相当于sql中的like模糊查询)
size:该操作符的含义是 查询特定长度的数组
db.book.find({name:{$all:['book2','book3']}})
如果想查询name数组特定的位置可以用key.index语句
db.book.find({name.0:'book2'})
db.book.find({name:{$size:3}}) //查询name数组长度为3的记录
db.book.find({name:{$size:2}}) //查询name数组长度为2的记录 无
limit: 该操作符是限制结果数量的含义,可以在find后使用 limit函数
skip 该操作符的含义是 跳过集合中的多少个数据,然后返回集合中剩下的数据
sort, 该操作符接收一个对象作为参数,这个对象是一组 键/值对,键对应集合中的键名,值代表排序的方向,排序的方向可以是1(升序),或者 -1(降序)。如果指定了多个键,则按照这些键被指定的顺序逐个排序
db.book.find().limit(3) 只取前3条
db.book.find().skip(3) 跳过前3条,要后面的
db.book.find().sort({age:-1}) 按照age排序,-1是倒序
每页2条记录,按照年龄倒序排序,从第1页到第3页都看看
db.book.find().limit(2).skip(0).sort({age:-1}) 第一页
db.book.find().limit(2).skip(2).sort({age:-1}) 第二页
db.book.find().limit(2).skip(4).sort({age:-1}) 第三页
总结出来规律没?分页查询主要用的是skip操作符,规律:limit( 每页记录数 ).skip( (第几页-1)*每页记录数 )
nodejs安装就不用说了,自个儿去官网下载然后自行安装
安装express脚手架GO
MongoDB对许多平台都提供驱动可以访问数据库,如C#、Java、Node.js等。这里以Node.js为例。
暂时先这样了,nodejs模块都不熟悉,脚手架创建出来的项目好多东西都不知道是啥,去摸索摸索再补充,先停这儿 – 2019-03-13
参考:https://www.cnblogs.com/best/p/6212807.html