一.初识MongoDB

到目前为止,MongoDB是一个新的和普遍使用的数据库。 它是一个基于文档的非关系数据库提供程序。

虽然它比传统的数据库快100倍,但早期说它将广泛地取代传统的RDBMS。 但是,不可否认的是:在性能和可扩展性方面 MongoDB 有着明显的优势。

关系数据库具有典型的架构设计,可以显示表的数量以及这些表之间的关系,而在MongoDB中则没有关系的概念。

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB将数据存储为文档,因此被称为面向文档的数据库。

一. MongoDB优点

  • MongoDB 的架构较少。它是一个文档数据库,它的一个集合持有不同的文档。
  • 从一个到另一个的文档的数量,内容和大小可能有差异。
  • MongoDB 中单个对象的结构很清淅。
  • MongoDB 中没有复杂的连接。
  • MongoDB 提供深度查询的功能,因为它支持对文档的强大的动态查询。
  • MongoDB 很容易扩展。
  • 它使用内部存储器来存储工作集,这是其快速访问的原因。

二. MongoDB的独特功能

  • 使用方便
  • 重量轻/轻量级
  • 比RDBMS快得多

三. MongoDB应用场景

  • 大而复杂的数据
  • 移动和社会基础设施数据
  • 内容管理和交付
  • 用户数据管理
  • 数据中心

四. MongoDB和关系型数据库(RDBMS)的性能分析

  • 在关系数据库(RDBMS)中,表用作存储元素,而在 MongoDB 中使用的是集合。
  • 在RDBMS中有多个模式,在每个模式中,可创建用于存储数据的表,而 MongoDB 是面向文档的数据库,数据是以类似JSON格式的BSON格式编写的存储的。
  • MongoDB几乎比传统数据库系统快100倍。

它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等

关系型数据库中有一个 "表" 的概念,有 "字段" 的概念,有 "数据条目" 的概念

MongoDB中也同样有以上的概念,但是名称发生了一些变化,严格意义上来说,两者的概念即为相似,但又有些出入,不过无所谓,我们就当是以上概念就好啦

光说的话,还是有点儿模糊,就让我们来做一个小例子,进行一个对比吧

下面我们做一张表:

这是我们用关系型数据库做的一张很简单的User表对吧

接下来我们再看一下MongoDB的数据结构:

这......这特么不就是个列表,里面放着三个字典吗?你说的对,如果你理解成了列表和字典,那么证明了你只会Python,在其他语言中它又是别的类型了,我们把这种类型的玩意儿,叫做:Json

MongoDB的每个表(Collection)中存储的每条数据(Documents)都是一个一个的Json,Json中的每一个字段(Key)我们称之为:Field

就此我们引出了三个关键字,Collection也就是关系型数据库中"表"的概念,Documents就是"数据条目",Field就是"字段"

二.MongoDB安装部署

关于MongoDB的安装

首先分享给你一个MongoDB 3.4的msi安装包 点击这里可以下载

安装完成之后,开始进入配置环节,首先我们要进入目录:

"C:\Program Files\MongoDB\Server\3.4\bin"

配置环境变量

之后的操作,windows 7 与 windows 10 不太一样,大同小异

windows 10 一路到底的"确定"

windows 7 在这里需要注意的是,Path路径移动到最后,输入:"  ;C:\Program Files\MongoDB\Server\3.4\bin  " 一定要带上 "

OK!到了这里我们基本已经完成了部分操作了

我们来试一下成果吧

打开cmd窗口

那我们来创建一个" C:\data\db\ "的目录

好了目录已经有了,再次试一下

好了开启成功了

那么服务开启了,客户端怎么去连接呢,这时我们需要另一个cmd窗口开启mongo的客户端

到此,我们成功的完成了,服务端的部署开启,还有客户端的链接

提示:千万别把这两个cmd窗口关了,不然你还得重新打开一次

三  MongoDB基本操作

一  创建库和表

创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间

是的,MongoDB设计的比较随意,没有就认为你是在创建,use LuffyCity_Com是不存在的,所以MongoDB就认为你是要创建并使用

这个概念一定要记清楚哦,MongoDB中如果你使用了不存在的对象,那么就等于你在创建这个对象

使用了不存在的对象,就代表创建对象,我们使用这一谬论创建一张表(Collection)试试

看来真的不是谬论,真的成功的创建了一个Oldboy的Collection

那么接下来就是在表(Collection)中添加一条数据了,怎么添加呢?

二. MongoDB 之 插入数据

insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐

db.Oldboy.insert({"name":"DragonFire","age":20})

insertOne: 插入一条数据,官方推荐

我们可以看出来两种方法的返回值截然不同

insertMany:插入多条数据,无需参数控制,官方推荐

这就是我们向LuffyCity_Com.Oldboy中插入了多条数据:

[{"name":"DragonFire", "age":20 },{ "name":"WuSir", "age":19}]

这里留下一个数据类型的悬念

插入完成就要查询

三. MongoDB  之 查询数据

这里不是Mysql 中的 select

find() 无条件查找:将该表(Collection)中所有的数据一次性返回

db.Oldboy.find({name:"WuSir2b"}) 条件查找:name等于WuSir2b的数据,这里会返回多条结果

"_id":ObjectId是什么,我们插入的时候并没有一个字段(Field)并没有_id这个,

这是MongoDB自动给我们添加到系统唯一标识"_id" 是一个ObjectId 类型

findOne()无条件查找一条数据,默认当前Collection中的第一条数据

findOne({age:19}) : 条件查找一条age等于19的数据,如有多条数据则返回更靠前的数据

查询数据的时候,发现了有些数据出现错误了,要修改怎么办呢?

四.MongoDB 之 修改数据

update({"name":"DragonFire"},{$set:{"age":21}}):根据条件修改该条数据的内容,跟insert一样,不推荐update的写法

把name等于DragonFire中的age改为21,这里要注意的是({"条件"},{"关键字":{"修改内容"}}),其中如果条件为空,那么将会修改Collection中所有的数据

updateOne({"age":19},{$set:{"name":"WSSB"}}):根据条件修改一条数据的内容,如出现多条,只修改最高前的数据

把age等于19的所有数据中第一条数据的name改为WSSB

updateMany({"age":19},{$set:{"name":"pig_qi"}}):根据条件修改所有数据的内容,多条修改

把age等于19的所有数据中的name改为WSSB

那么我们之前说过MongoDB的灵活性,没有就代表我要创建,所以说如果该条Documents没有name属性,他就会自动创建一个name属性并且赋值为"WSSB"

更改了半天,我觉得,这些数据我都不想要了,该怎么办呢?

五.MongoDB  之  删除数据

remove({}):无条件删除数据,这里要注意了,这是删除所有数据,清空Collection

remove({"name":"DragonFire"}) : 条件删除name等于"DragonFire"的所有Document

之后我们来说一下MongoDB的数据类型,跟你们透漏一下,MongoDB的数据类型

转载于:https://www.cnblogs.com/guoxiaoyan/p/9403497.html

MongoDB一 之增删改查相关推荐

  1. Mongodb的的增删改查

    Mongodb的的增删改查 1. mongodb插入数据 命令:db.集合名称.insert(document)   [document要用大括号包起来] db.stu.insert({name:'g ...

  2. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

  3. Mongodb命令操作增删改查

    Mongodb命令操作增删改查 需求描述 新增5 人 查询 修改 删除 数据结构 {"_id" : ObjectId("59f938235d93fc4af8a37114& ...

  4. express+mongodb+vue实现增删改查-全栈之路

    vue element mongodb express 效果图 前言 最近一直想学下node,毕竟会node的前端更有市场.但是光看不练,感觉还是少了点什么,就去github上看别人写的项目,收获颇丰 ...

  5. Node.js+Express+MongoDB 实现学生增删改查

    前言 选用Node.js,Express,MongoDB来实现一个学生信息的增删改查. Express框架搭建服务器 art-template模板实现页面 MongoDB数据库 Mongoose操作数 ...

  6. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  7. mongodb数据库的增删改查(有图有demo)

    名词注释 下面的截图中,有一些名词需要解释一下,方便理解和应用: cuckoo叫库名,也就是数据库的名字 users叫集合名,也就是colloction的名字 右侧带_id的一排排的, 那叫文档 而_ ...

  8. Java操作Mongodb数据(增删改查聚合查询)

    文章目录 一.Java操作MongoDB 二.使用步骤 1.基础配置 2.实体类 3.MongoDB表数据 3.增删改查聚合查询 总结 一.Java操作MongoDB 上一篇文章介绍了,如何在本地使用 ...

  9. java创建mongdb数据库_【转发】Java使用MongoDB数据库进行增删改查

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_26584263/article/ ...

  10. express+mongodb+vue实现增删改查-全栈之路2.0

    Github项目地址 效果图 登陆页 查询 新增 修改 删除 详情页 技术栈 vue axios vue-router express mongo element iconfont scss 前言 半 ...

最新文章

  1. 2017程序员该为自己制定的12个小目标
  2. 打印容器_化妆品行业是如何通过3D打印来定制开发产品的?
  3. 【Linux环境】阿里云CPU使用率 100% ECS 同时连接数峰值 25k+ 问题排查无果(附阿里云重新初始化云盘详细步骤)
  4. 程序员面试金典 - 面试题 17.06. 2出现的次数(找递推规律)
  5. oracle decode函数
  6. ResNeX论文概述
  7. 11.history命令历史
  8. css与jquery、图标字体、常用数据
  9. Spring创建对象的原理
  10. c语言 sizeof(unsign),C语言基础知识
  11. openpyxl 列 插入_openpyxl3.0.3 中文手册--插入删除行和列、移动单元格
  12. 计算机考试a bcd哪一级难,2014计算机一级考试试题:WPS及基础题
  13. gls开发_广义最小二乘gls数学推导直觉
  14. root后还能解除吗,root能不能完全解除
  15. c#file过滤多种格式_C# 文件过滤器filter
  16. 初步了解Panda3D 雾(Fog)
  17. 巨龙信息大数据建模与分析技术浅析
  18. 眉山市职称计算机成绩,眉山市2014年第5次(10月份)全国职称计算机考试成绩
  19. 北航机器人所和华科机械_机械考研,华科和北航哪个好考
  20. PMBOK学习总结之项目管理

热门文章

  1. 转:比尔·盖茨和理查德·斯托曼
  2. redux 思考以及源码解析
  3. 百分点发布《数据决策力白皮书》:数据的能量才开始激发
  4. python清空列表的方法
  5. 有向图的拓扑排序算法JAVA实现
  6. 面试中精华,俺自己总结的
  7. raspberry pi_前5名:替代密码,Raspberry Pi进入太空等等
  8. raspberry pi_Raspberry Pi支持的杂耍性能
  9. 神奇 | 神奇,原来 Linux 终端下还有这两种下载文件方式
  10. 推荐一个Python的开源小工具大合集!