虽说现在关系型数据库还是主流,但是面对某些需求的时候,需要非关系型数据库来补充它,学习一个主流的NoSQL数据库还是很有必要的。MongoDB是一个功能丰富的NoSQL数据库,本文整理了它最常用的部分形成了这篇入门教程,希望对大家有所帮助。
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。
下载MongoDB安装包,选择Windowsx64版本安装,下载地址:/download-ce…
运行MongoDB安装包并选择自定义安装,设置好安装路径;
配置MongoDB,让MongoDB作为服务运行,并配置好数据目录和日志目录;
取消MongoDBCompass的安装选项(不取消安装极慢),需要可自行安装;
双击可以运行MongoDB自带客户端,操作MongoDB;
连接成功后会显示如下信息;
如果需要移除MongoDB服务,只需使用管理员权限运行cmd工具,并输入如下命令。
复制代码Linux下的安装
下载MongoDB的Docker镜像;
dockerpullmongo:4.2.5复制代码
使用Docker命令启动MongoDB服务;
dockerrun-p27017:27017--namemongo\-v/mydata/mongo/db:/data/db\-dmongo:4.2.5复制代码
有时候我们需要为MongoDB设置账号,可以使用如下命令启动;
dockerrun-p27017:27017--namemongo\-v/mydata/mongo/db:/data/db\-dmongo:4.2.5--auth复制代码
然后我们需要进入容器中的MongoDB客户端;
dockerexec-itmongomongo复制代码
之后在admin集合中创建一个账号用于连接,这里创建的是基于root角色的超级管理员帐号;
({user:'mongoadmin',pwd:'secret',roles:[{role:"root",db:"admin"}]});复制代码
创建完成后验证是否可以登录;
("mongoadmin","secret")复制代码
整个账号创建过程可以参考下图。
首先下载客户端工具,下载地址:/download
下载完成后解压,双击即可使用;
之后创建一个到MongoDB的连接;
创建连接成功以后,就可以操作MongoDB了。
SQL概念MongoDB概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引primarykeyprimarykey主键,MongoDB自动将_id字段设置为主键
创建数据库,使用use命令去创建数据库,当插入第一条数据时会创建数据库,例如创建一个test数据库;
({name:"MongoDB教程"})WriteResult({"nInserted":1})复制代码
删除数据库,使用db对象中的dropDatabase()方法来删除;
(){"dropped":"test","ok":1}复制代码
集合操作创建集合,使用db对象中的createCollection()方法来创建集合,例如创建一个article集合;
("article"){"ok":1}showcollectionsarticle复制代码
删除集合,使用collection对象的drop()方法来删除集合,例如删除一个article集合;
()trueshowcollections复制代码文档操作插入文档
MongoDB通过collection对象的insert()方法向集合中插入文档,语法如下;
(document)复制代码
使用collection对象的insert()方法来插入文档,例如插入一个article文档;
({title:'MongoDB教程',description:'MongoDB是一个Nosql数据库',by:'Andy',url:'',tags:['mongodb','database','NoSQL'],likes:100})复制代码
使用collection对象的find()方法可以获取文档,例如获取所有的article文档;
({})复制代码
{"_id":ObjectId("5e9943661379a112845e4056"),"title":"MongoDB教程","description":"MongoDB是一个Nosql数据库","by":"Andy","url":"","tags":["mongodb","database","NoSQL"],"likes":100.0}复制代码
更新文档MongoDB通过collection对象的update()来更新集合中的文档,语法如下;
(query,update,{multi:boolean})update:更新属性的操作符,类似与SQL中的SET部分query:删除的查询条件,类似于SQL中的WHERE部分query:查询条件,类似于SQL中的WHERE部分background:建索引过程会阻塞其它数据库操作,设置为true表示后台创建,默认为falsename:指定索引名称,如果没有指定会自动生成复制代码
给title和description字段创建索引,1表示升序索引,-1表示降序索引,指定以后台方式创建;
({"title":1,"description":-1},{background:true})复制代码
查看article集合中已经创建的索引;
()复制代码
/*1*/[{"v":2,"key":{"_id":1},"name":"_id_","ns":""},{"v":2,"key":{"title":1.0,"description":-1.0},"name":"title_1_description_-1","ns":"","background":true}]复制代码
聚合MongoDB中的聚合使用aggregate()方法,类似于SQL中的groupby语句,语法如下;
(AGGREGATE_OPERATION)复制代码
聚合中常用操作符如下;
操作符描述$sum计算总和$avg计算平均值$min计算最小值$max计算最大值
根据by字段聚合文档并计算文档数量,类似与SQL中的count()函数;
([{$group:{_id:"$by",sum_count:{$sum:1}}}])复制代码
/*1*/{"_id":"Andy","sum_count":2.0}/*2*/{"_id":"Ruby","sum_count":1.0}复制代码
根据by字段聚合文档并计算likes字段的平局值,类似与SQL中的avg()语句;
([{$group:{_id:"$by",avg_likes:{$avg:"$likes"}}}])复制代码
/*1*/{"_id":"Andy","avg_likes":100.0}/*2*/{"_id":"Ruby","avg_likes":100.0}复制代码
正则表达式MongoDB使用$regex操作符来设置匹配字符串的正则表达式,可以用来模糊查询,类似于SQL中的like操作;
例如查询title中包含教程的文档;
({title:{$regex:"教程"}})复制代码
不区分大小写的模糊查询,使用$options操作符;
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。