NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

  这次我们来说一下我们的MongoDB,MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

一、安装

  1>下载,地址输入https://www.mongodb.com/download-center/community,选择社区版本即可。到Linux客户端下输入$ wget https://fastdl.mongodb.org/linux/mongodb-linux-s390x-rhel72-4.2.1.tgz

  2>解压,输入$ tar -zxvf mongodb-linux-s390x-rhel72-4.2.1.tgz,创建一个一个数据库的物理文件存储路径,我一般定义为/data/mongoData;$ mkdir -p /data/mongoData。

  3>启动测试,在安装路径下输入 $ ./bin/mongod --dbpath=/data/mongoData/即可,--dbpath就是我们刚才创建的路径。(别关闭)

  4>再打开一个客户端,输入$ ./bin/mongo --host=127.0.0.1 --port=27017。进入到我们的客户端。输入db version();即可查看到我们的版本信息。安装成功。

  5>貌似一直开着客户端不太好用,我们写一个配置文件。创建一个conf目录。输入 $ vim conf/mongodb.conf 添加 如下内容

dbpath=/data/mongoData/

logpath=/data/mongoLogs/mongo.log

port=27017

  重启启动我们的MongoDB $ ./bin/mongod -f /conf/mongodb.conf & 即可(记得把目录提前创建好,不然启动报错的)

常见参数详解

dbpath 数据库目录,默认/data/db

bind_ip 监听IP地址,默认全部可以访问

port 监听的端口,默认27017

logpath 日志路径

logappend 是否追加日志

auth 是开启用户密码登陆

fork 是否已后台启动的方式登陆

config 指定配置文件

  注意:在下载安装包成功以后,启动时可能会出现,-bash: ./bin/mongod: cannot execute binary file错误信息。这个是版本不对应问题,可能是64位系统下载了32位的安装包,或者你32位的系统安装了64位的安装包,我们输入$ getconf LONG_BIT即可查看我们的版本号。下载对应正确的版本。

二、简单使用(基础和插入)

  1.查看所有库,show databases;或者show dbs;

  2.选择库,use 库名;如果没有该库,则创建该库,输入db;查看所在数据库。

  3.查看该库下的所有表,show tables。或者show collections;

  4.创建与插入,我们输入 $ db.表名.insert({"属性":"值"}),如果没有则创建该表,存在则添加数据。例如db.student.insert({name:"张三",age:12})。

  五种数据类型展示db.student.insert({name:"小菜技术",age:18,souce:99.9,sex:true,createDate:Date()})。字符串,整型,浮点型,布尔型,时间类型

  5.查看表 db.表名.find();例如我们$  db.student.find(); 简单条件查询db.student.find({age:18})即可

  6.表删除,db.表名.drop(),例如 db.classInfo.drop()。db.dropDatabase()是删除当前数据库。

  7.多条插入,db.表名.insertMany([data1,data2])例如db.stu.insertMany([{name:"赵武"},{age:11}]);用insert后面加一个数组也是可以的。

  这里再说一下我们的插入,我们会看到每次我们并没有指定我们的id,每次MongoDB会帮我自动生成一个id,这时我们的数据可以重复插入的,我们只需要每次指定id,就不会造成数据的重复了,例如db.stu.insert({_id:001,name:"xxxx"})

二、简单使用(基础查询)

  1.where name="王武" and age=12,这个到我们的MongoDB里就是这样的db.stu.find({name:'王武',age:12})即可。

  2.范围查询>,<,>=,<=,分别对应的是$gt,$lt,$gte,$lte,例如db.stu.find({age:{$gte:12}}),就是要查询年龄字段大于等于12的值。

  3.where age in (12,99,100),这个到我们的MongoDB里就是这样的db.stu.find({age:{$in:[12,99,100]}})即可。注意$all是并且的意思,现在我觉得没啥用,用法和in一样的,意思是既等于这个也等于那个。

  4.where  name="王武" or age=12,到我们的MongoDB里就是这样的db.stu.find({$or:[{name:"王武"},{age:11}]}),注意括号。我们sql的and也可以写成db.stu.find({$and:[{name:"王武"},{age:99}]})这样的。

  5.where name='赵武' or (name="王武" and age=12),就写成db.stu.find({$or:[{name:"赵武"},{$and:[{name:"王武"},{age:12}]}]})。自己缕缕顺序就好了,也不难。

  6.排序,db.stu.find().sort({age:-1}),意思就是按照查找所有,然后按照年龄降序排列,1升序,-1降序。多个排序字段,逗号分隔,例如db.stu.find().sort({age:-1})

  7.分页,db.stu.find().skip(3*0).limit(3),意思是每页三条记录,我们要查看第一页的数据,skip(分页单位*(当前页-1))。limit(分页单位)。

最进弄了一个公众号,小菜技术,欢迎大家的加入

java架构之路-(NoSql专题)MongoDB快速上手的更多相关文章

  1. [转帖]java架构之路-(面试篇)JVM虚拟机面试大全

    java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html   下文连接比较多啊,都是我过整理的博客,很多答案都 ...

  2. MongoDB快速上手

    1.  MongoDB简介 MongoDB是一个跨平台的基于Key_Value键值对形式保存数据的NoSQL文档类型数据库. NoSQL(not only sql)数据库,泛指非关系型数据库. 1.1 ...

  3. java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

    历史演变: 以前我们都是一个war包,包含了很多很多的代码,反正我开始工作的时候做的就是这样的项目,一个金融系统,代码具体多少行记不清楚了,内部功能超多,但是实际能用到的不多,代码冗余超大,每次部署大 ...

  4. java架构之路-(Redis专题)Redis的主从、哨兵和集群

    我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...

  5. java架构之路-(Redis专题)SpringBoot连接Redis超简单

    上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis 主从架构 如何配置我上次已 ...

  6. java架构之路-(Redis专题)聊聊大厂那些redis

    上几次说了redis的主从,哨兵,集群配置,但是内部的选举一直没说,先来简单说一下选举吧. 集群选举 redis cluster节点间采取gossip协议进行通信,也就是说,在每一个节点间,无论主节点 ...

  7. java架构之路-(Redis专题)redis面试助力满分+

    1.Redis支持的数据类型? 答:五种,在第一节redis相关的博客我就说过,String,Hash,List,Set,zSet,也就是我们的字符串,哈希,列表,集合,有序集合五种.结构图如下. 2 ...

  8. java架构之路-(netty专题)netty的基本使用和netty聊天室

    上次回顾: 上次博客,我们主要说了我们的IO模型,BIO同步阻塞,NIO同步非阻塞,AIO基于NIO二次封装的异步非阻塞,最重要的就是我们的NIO,脑海中应该有NIO的模型图. Netty概念: Ne ...

  9. java架构之路-(Redis专题)Redis的高性能和持久化

    上次我们简单的说了一下我们的redis的安装和使用,这次我们来说说redis为什么那么快和持久化数据 在我们现有的redis中(5.0.*之前的版本),Redis都是单线程的,那么单线程的Redis为 ...

随机推荐

  1. 每个新手程序员都必须知道的Python技巧

    当下,Python 比以往的任何时候都更加流行,人们每天都在实践着 Python 是多么的强大且易用. 我从事 Python 编程已经有几年时间了,但是最近6个月才是全职的.下面列举的这些事情,是我最 ...

  2. 【Java】Java 单文件下载及重命名

    代码(仅供参考): /* * 另存为 */ @RequestMapping("/saveAs.do") public @ResponseBody void saveAs(Strin ...

  3. Vue中使用key的作用

    key的作用是为了在diff算法执行时更快的找到对应的节点,提高diff速度 key具有唯一性 vue中循环需加 :key=“唯一标识” ,唯一标识可以使item里面id index 等,因为vue组 ...

  4. 什么是回流(重排 reflow)?什么是重绘(repaint)?如何减少回流、重绘?

    什么是回流(重排 reflow)? 回流(重排 reflow):对DOM树进行渲染,只要修改DOM或修改元素的形状大小,就会触发reflow,reflow的时候,浏览器会使已渲染好受到影响的部分失效, ...

  5. 自己动手撸一个LinkedList

    自己动手撸一个LinkedList 1. 原理 LinkedList是基于双链表的动态数组,数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历.因此,Linked ...

  6. Anrlr4 生成C++版本的语法解析器

    一. 写在前面 我最早是在2005年,首次在实际开发中实现语法解析器,当时调研了Yacc&Lex,觉得风格不是太好,关键当时yacc对多线程也支持的不太好,接着就又学习了Bison&F ...

  7. 使用java语言实现一个动态数组(详解)(数据结构)

    废话不多说,上代码 1.从类名开始(我真是太贴心了) public class Array<E> 首先数组类需要带有泛型,这个不多说.需要注意的是在java中,数组只能存放同一个类型的. ...

  8. [JZOJ5772]【NOIP2008模拟】今天你AK了吗?

    Description AK:All kill“你为什么没背书?”“没有为什么,我就是没背书.”“……我去年买了个表,G—U—N!”头铁王InFleaKing把背书的时间都拿去列排列了......n= ...

  9. 【Labview入门】工具的使用

    labview版本:Labview2015 在你使用labview时你可能已经发现,在鼠标移动到连线上时,鼠标会自动的变化,其实这是你选择了自动识别的工具,然后鼠标会根据你所指示的东西自动切换工具类型 ...

  10. Vue 上传材料并传给后端接口(使用input)

    最近工作中接到一个需求,需要上传一个文件材料,提交时传给后端.使用的框架是Vue,废话不说直接上代码 <template> <div> <input type=" ...