初试MongoDB数据库

数据库基本概念

数据库(Database)基本概念:

  1. 数据库就是按照一定的数据结构来组织,储存和管理数据的仓库
  2. 我们写的程序都是在内存中运行的,一旦程序运行结束或者计算机断点,程序运行中的数据就会全部丢失;所以我们就需要将一些程序的数据持久化到键盘之中,以确保数据的安全性。
  3. 数据库则是大批量数据持久化的普遍选择,1.文件 2. 数据库

为什么都采用数据库来储存数据:

  • 数据库是有结构的
  • 数据库可以提供各种接口,让数据处理(增删改查)快捷方便
  • 各种语言(PHP jsp .net..)提供了完善的接口
b6dde1cf95ae2a9ec8e68c0bf1719a3.png

数据库分类

  1. ROBMS(关系型数据库):
    • 比如MySql 、sql server Oracle 等
    • 特点 通过一张张表来建立关联
    • 基本都使用SQL语言来管理数据库,
  2. Nosql (非关系型数据库):
    • 没有行 、列的概念 用json类储存数据
    • 集合相当于“表”,文档相当于“行”
    • 标准化和非标准化的摩擦。
    • 标准化限制创新,非标准话不能统一

特征
使用键值(Key Value)储存数据;
MongoDB的逻辑结构是一种层次结构,主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。

  • 文档(document):由键/值对构成,像{a:1};{s:”abc”}等,它是MongoDB核心单元,MongoDB的文档(document),相当于关系数据库中的一行记录。
  • 集合(Collection):多个文档组成一个集合(collection),相当于关系数据库的表。
  • 数据库(database):多个集合(collection),逻辑上组织在一起,就是数据库(database)。
    一个MongoDB实例支持多个数据库(database)。

关系型数据库和非关系型数据库区别:
关系型数据库比较结构化,操作不是很灵活,菲关系型数据库操作灵活,但不适合大型数据存储,比较适合微架构,两者是相辅相成的关系

8bc32dd95a923344fdc2710d2fcbeab.png

非关系型数据库使用方面:

  1. 数据模型比较简单
  2. 需要灵活性更强的后台系统
  3. 对数据库性能要求比较高
  4. 不需要高度的数据一致性

非关系型数据库主要适合小微型架构的使用

数据库MongoDB安装

MongoDB(非关系型数据库):

  1. 适合快速开发web应用而设计的数据库系统
  2. 设计目标是极简、灵活、经常在web应用栈的业务层被运用
  3. 它的数据模型是面向文档的,类似于json的结构
  4. 所以这个数据库中是各种各样的json, 并以键值形式对存储

安装:
下载:https://www.mongodb.com/
偶数是稳定版,奇数是开发版
最好下载64位的系统版本的

配置环境变量:

  1. 新建--->安装到bin路径复制到环境变量
  2. 创建data->db文件夹
  3. 打开命令行输入mongod启动DB服务器
  4. 指定端口号和路径 mongod --dbpath d:\data\db
  5. 将MongDB设置为系统服务,data\log
    创建配置文件在bin下穿件文件mongod.cfg
    执行一段命令:
sc.exe create MongoDB binPath= "\"F:\MongoDB\Server\3.2\bin\mongod.exe\" --service --config= \"F:\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

主要是让MongoDB一直运行在内存中
参考资料:
https://www.cnblogs.com/wzlblog/p/6364045.html
https://www.cnblogs.com/chenlq/p/6515876.html

在命令行中使用MongoDB插入命令

MongoDB的组成:

  • 数据库 数据库是一个仓库 在仓库里可以放集合
  • 集合: 集合类似数组 在集合里可以放文档
  • 文档:文档是数据库中最小的单位 我们储存和操作的内容都是文档。

基本指令:
show dbs 显示当前所有的数据库
use 数据库名 进入到指定数据库
db 显示当前所在的数据库
show collections 显示数据库中的所有集合

使用管理员打开 cmd
输入 mongo进入MongoDB的环境
进入MongoDB的环境才能执行MongoDB的命令
然后使用命令行进行CRUD(增删改查):
db.<collection>.insert(doc)

举例子:
想school数据库中的学生集合student中插入一个新的学生对象
增加一条数据:
db.student.insert({id:"001",name:"znl",age:18,sex:“男”})
在当前的集合(school)中新建一条数据

查询一条数据:
db.<collection>.find();

如:db.student.find();
回车 就能查询student下的所有数据
插入多条数据:

db.集合名.insert([
    {name:"张三",age:18,sex:"man"},
    {name:"张三",age:18,sex:"man"},
    {name:"张三",age:18,sex:"man"},
    {id:18,name:"张三",age:18,sex:"man"}
]);

插入多条数据时把多条语句放在一个数组里
插入可随便插入 不必拘泥于字段是否相同 当插入的字段不存在时会自动创建该字段

查看更多更多操作:http://www.mongodb.org.cn/manual/

MongoDB 可视化工具 【NOSQL】

然而一直使用命令行操作是很麻烦的事情,所以推荐使用NOSQL可视化工具
安装可视化工具下载地址:https://www.mongodbmanager.com/download

使用可视化工具

可视化工具 查找功能:
插入(insert)语句:

db.student(集合名字).insert([
{id:1,name:"znl",age:18},
{id:1,name:"znl",age:18},
]);

查询语句:
db.student(集合name).find();

设定条件查询:
db.student.find({ "_id" : ObjectId("5bd01c825f0d528d36a2c06f")});
查询id对应的数据
db.student.find({age:18,name:"张三"});
查询所有的age是18并且name是张三的人
db.student.findOne({age:18,name:"张三"});
查询单条符合条件的数据

操作符-查询有多少条数据:
db.student.find().count();

db.student.find().length();
返回数据总条数

查询符合条件数据的条数:
db.student.find({name:"张三"}).length();
返回符合name:"张三"的条数

数据库更新命令

更新原有的字段的数据:

db.student.update({"name":"张三"},{$set:{
      name:"刘五",
      age:45
}});

把匹配到的name:"张三"的数据都更新成 name:"刘五", age:45
也可以新增没有的字段 直接写入就可以
$set :有这个字段就修改 没有这个字段就新增

删除一个字段:

db.student.update({"name":"张三"},{$unset:{
    age:1
}});

查询name:张三的一条数据 然后删除它的age字段

修改多条:

db.student.updateMany({"sex":"man"},{$set:{
    aihao:"玩游戏"
}});

把符合sex:man的语句都新增(修改)一条aihao:"玩游戏"
$set :有则修改 无则新增

更新多条数据方法2:

db.student.update({name:"张三"},{$set:{
      name:"王五"
}}, {
     multi:true
});

参考文档:https://docs.mongodb.com/manual/tutorial/query-documents/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    未央_m阅读 710评论 0 1
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    EndEvent阅读 1,159评论 1 4
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    王梓懿_1fbc阅读 489评论 0 3
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    慕杨_阅读 550评论 0 4