MongoDB入门详解

一、什么是MongoDB

image.png

MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB是开源,高性能的NoSQL数据库,支持索引、集群、复制和故障转移、各种语言的驱动程序丰富;

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

二、MongoDB的安装

1、下载MongoDB

可以从官网下载安装,下载地址:MongoDB官网

image.png

2、安装

下载成功后点击msi文件直接next,这里以Windows操作系统为例。


MongoDB启动安装.png
3、环境配置

安装文件里面有两个主要的部分:mongod.exe和mongo.exe,分别为服务器和操作后台。如果要成功运行MongoDB,需要先搭建并运行服务器,其次在保持服务器运行的情况下再打开后台。

MongoDB安装目录文件.png

由于前期的安装不会生成数据目录,需要自己创建。打开cmd,在D盘创建数据文件夹,如D:\data\db用于存放mongodb的数据文件,也可使用Windows自带的界面在D盘右键创建。


db.png

运行cmd,打开安装目录下的bin文件,在bin目录中执行mongod.exe文件。输入如下:


mongod.png

保持之前的cmd窗口,再打开一个cmd窗口来运行mongo.exe,同样打开bin文件,执行mongo.exe,就可以进入MongoDB的Shell界面。


mongo.png

至此,MongoDB安装完毕,然后就可以使用命令行操作数据库了。

4、把MongoDB服务器作为Windows服务运行

将MongoDB服务器安装为Windows服务,可以避免每次使用MongoDB都要开启mongod.exe程序,当mongod.exe被关闭时,mongo.exe 就无法连接到数据库的问题。

1)打开MongoDB的安装目录如“D:\Program Files\MongoDB\Server\3.6\bin”,并在此目录下新建一个mongo.config文件,文件内容如下:

##数据库目录##
dbpath=C:\data\db

##日志输出文件##
logpath=C:\data\log\db.log

2)cmd进入命令行,使用cd切换目录到安装目录,如:cd D:\Program Files\MongoDB\Server\3.6\bin
安装MongoDB服务且指定配置文件,如:mongod --config "D:\Program Files\MongoDB\Server\3.6\bin\mongo.config" --install

配置服务.png

3)启动服务
启动服务:net start mongodb
停止服务:net stop mongodb

启动服务.png

打开任务管理器可以看到MongoDB已经启动


进程管理.png

把MongoDB服务器作为Windows服务运行之后,就不用再启动MongoDB的服务器,直接运行mongo.exe操作后台程序就可以使用。

三、数据库的基本操作

1、基本概念

在MongoDB中基本的概念是文档、集合、数据库。


image.png
2、基本操作

创建数据库:

  • 语法:use database_name
  • 示例:use DB_Demo
    如果数据库不存在,则创建数据库,否则切换到指定数据库。
    要显示刚创建的数据库需要向 数据库插入一些数据。

删除数据库:

  • 语法:db.dropDatabase()
  • 示例:先切换到数据库 DB_Demo,再执行删除操作。(可以使用 db 命令查看当前数据库名,防止误操作)
    use DB_Demo
    db.dropDatabase()

创建集合:

  • 语法:db.createCollection(name, options)
  • 示例:先切换到数据库 DB_Demo并创建users集合
    use DB_Demo
    db.createCollection("users")

删除集合:

  • 语法:db.collection.drop()
  • 示例:db.user.drop()

插入文档:

  • 语法:db.collection_name.insert(document)
  • 示例:db.users.insert({name:'zhangsan',age:18})
  • 语法:db.collection_name.save(document)
  • 示例:db.users.save({name:'lisisi',age:16})

说明:insert和save方法都可以插入数据,当默认的“_id”值已存在时,调用insert方法插入会报错;而save方法不会,会更新相同的_id所在行数据的信息。

  • 语法:db.collection_name.insertOne(document)
  • 说明:向指定集合中插入一条文档数据
  • 语法:db.collection_name.insertMany(document)
  • 说明:向指定集合中插入多条文档数据(注意是数组)
  • 示例:db.users.insertMany([{name:'wangsansan',age:'22'},{name:'zhanglili',age:21}])

删除文档:

  • 语法:db.collection_name.remove(条件)
  • 示例: db.users.remove({'name':'zhangsan'})
  • 语法:db.collection_name.deleteOne(条件)
  • 说明: 删除 指定条件的一个文档
  • 语法:db.collection_name.deleteMany(条件)
  • 说明: 删除 指定条件的全部文档

修改文档:

  • 语法:db.collection_name.update({"条件字段名":"字段值"},{$set:{"要修改的字段名":"修改后的字段值"}})
  • 说明: 只修改第一条发现的文档
  • 示例:db.users.update({'name':'zhangsan'},{$set:{'name':'wanger'}})
  • 语法:db.collection_name.update({"条件字段名":"字段值"},{$set:{"要修改的字段名":"修改后的字段值"}},{multi:true});
  • 说明: 修改多条相同的文档,需要设置 multi 参数为 true。

查询文档:

  • 查询集合中所有数据:db.collection_name.find(); 例:db.users.find().pretty()
  • 按条件查询(支持多条件):db.collection_name.find(条件); 例:db.users.find({name:'zhangsan'});
  • 限制数量:db.collection_name.find().limit(数量);
  • 跳过指定数量:db.collection_name.find().skip(数量);
  • 查询第一条(支持条件):db.collection_name.findOne(条件);
  • 查询数量:db.collection_name.find().count();
  • 排序:db.collection_name.find().sort({"字段名":1}); 1:表示升序,-1:表示降序
  • 指定字段返回: db.collection_name.find({},{"字段名":0}); 1:返回 0:不返回

常用命令:

  • 使用 db 命令查看当前数据库名
  • 查看所有数据库,可以使用 show dbs 命令
  • 查看已有集合,可以使用 show collections 命令
  • find() 方法以非结构化的方式来显示所有文档,语法:db.collection_name.find()
  • 以易读的方式来读取数据使用 pretty() 方法,语法:db.collection_name.find().pretty()
  • use database_name如果数据库不存在,则创建数据库,否则切换到指定数据库

四、其它注意事项

1、数据库命名规则:
  • 不能是空字符串
  • 不能含有空格、.、$、/、\和\0(空字符)
  • 应全部小写
  • 最多64字节
2、保留数据库

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库

  • admin:’root‘数据库,要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限,一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器
  • local:这个数据库永远不会被复制,可以用来存储于本地单台服务器的任意集合
  • config:当mongoDB用于分片设置时,config数据库在内部使用,用于保存分片的相关信息

五、可视化工具GUI

1、MongoDB可视化工具

MongoDB安装完成后会有一个可视化工具,如图,可以点击连接到本地数据库,查看本地的数据库名称,以及创建数据库,删除数据库等操作。


image.png

点击连接后会列出当前存在的数据库列表。


image.png
2、第三方可视化工具

下载地址:robomongo官方网站

第二项是一个绿色版,解压后在文件夹中找到exe文件直接运行即可。


image.png

运行后连接到本地数据库,右键打开shell脚本编写界面可以执行MongoDB相关命令,执行快捷键F5或Ctrl+Enter。


image.png

参考链接:
MongoDB官网
MongoDB中文网
MongoDB安装及将MongoDB服务器作为windows服务运行
NodeJS+Express+MongoDB

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

推荐阅读更多精彩内容

  • 第一章 前言 1.1 知识体系分析 前端工程师:Web前端,也就是在Web应用中用户可以看得见碰得着的东西。包括W...
    whitsats阅读 861评论 0 3
  • 安装 MongoDB Windowns、Ubuntu17.10 下安装 MongoDB教程在此 MongoDB 帮...
    Kangvcar阅读 2,087评论 0 13
  • MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方...
    入戏半分笑阅读 365评论 0 2
  • MongoDB与关系型数据库对比 MongoDB属于文档型的非关系型数据库,其他像Redis就属于键值对型的非关系...
    少见多怪阅读 1,741评论 0 4
  • 1.express node Web应用框架,提供了很多Web应用和HTTP工具 使用express可以快速搭建一...
    昵称不能太随便阅读 1,320评论 0 2