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. 10个值得深思的_PHP_面试问题

    Q1 第一个问题关于弱类型 $str1 = 'yabadabadoo'; $str2 = 'yaba'; if (strpos($str1,$str2)) { echo "\"&q ...

  2. 05-03 主成分分析(PCA)

    目录 主成分分析(PCA) 一.维数灾难和降维 二.主成分分析学习目标 三.主成分分析详解 3.1 主成分分析两个条件 3.2 基于最近重构性推导PCA 3.2.1 主成分分析目标函数 3.2.2 主 ...

  3. bugku旋转跳跃

    下载下是一个mp3音频,尝试听了下,没有收获, 使用mp3stege,将文件拷在mp3stege目录下,然后使用cmd cd到目录下 命令行是decode -X -P 密码 文件 生成了一个文本 打开 ...

  4. Real Beauty真正的美丽

    [1]Beauty is only skin-deep. Physical beauty can only be held fleetingly. Real beauty is much deeper ...

  5. 2. SOFAJRaft源码分析—JRaft的定时任务调度器是怎么做的?

    看完这个实现之后,感觉还是要多看源码,多研究.其实JRaft的定时任务调度器是基于Netty的时间轮来做的,如果没有看过Netty的源码,很可能并不知道时间轮算法,也就很难想到要去使用这么优秀的定时调 ...

  6. App元素定位

    1.元素定位(采用Appium-desktop自带的工具) 1.1将初始化参数复制进去校验json格式正确且保存后,点击start session 初始化参数来源如下: # 定义启动设备需要的参数 d ...

  7. 某PHP发卡系统SQL注入

    源码出自:https://www.0766city.com/yuanma/11217.html 安装好是这样的 审计 发现一处疑似注入的文件 地址:/other/submit.php 看到这个有个带入 ...

  8. Vue 实现点击空白处隐藏某节点(三种方式:指令、普通、遮罩)

    在项目中往往会有这样的需求: 弹出框(或Popover)在 show 后,点击空白处可以将其 hide. 针对此需求,整理了三种实现方式,大家按实际情况选择. 当然,我们做项目肯定会用到 UI 框架, ...

  9. libevent::事件

    /***************************************************************** 函数功能: 创建事件集 ********************* ...

  10. PowerShell渗透--Empire(二)

    权限提升 Bypass UAC usemodule powershell/privesc/bypassuac 设置listener execute list查看 usemodule powershel ...