Mongodb数据库的基本操做

mongodb是文档型数据库,其官网地址为 https://www.mongodb.com/。咱们在官网上下载该软件包,并完成安装。如咱们能够设置安装路径为D:\MongoDB\mongodb。咱们在完成安装以后,能够看到在该目录的bin文件夹下有以下文件:mysql

图片描述

接下去咱们配置环境变量,为了能在任意目录下都能运行bin这个文件夹下的应用程序。咱们在环境变量的用户变量当中新建一个名为Mongodb的变量,其变量值为D:\MongoDB\mongodb\bin。接下去编辑用户变量当中的PATH变量值,在其值后面加上;%Mongodb%;。最后肯定关闭完成了环境变量的配置。接下去在cmd当中,键入命令-> mongo,显示以下结果,则说明安装和配置成功。sql

图片描述

这里咱们能够看到能够正确显示咱们安装的mongodb的版本号,在此显示链接失败是由于咱们还没进行数据库开机的操做。mongodb

1、Mongodb数据库的开机与链接

因为mongodb为文档型的数据库,它不一样于mysql等数据库,它的数据库真实可见,与咱们本机上的物理文件一一对应。故咱们须要先创建一个文件夹,做为数据库真实存放的位置。好比咱们在D盘根目录下新建一个名为mongo的文件夹,则该数据库文档所在文件夹的绝对物理路径为D:\mongo
接下去咱们打开cmd,输入开机命令-> mongod --dbpath D:\mongo。此时能够看到控制台在最后一行输出waiting for connections on port 27017,则说明此时数据库完成了开机操做。数据库

图片描述

此时在咱们新建的mongo文件夹下多了以下所示的默认文件:json

图片描述

在开机命令当中--dbpath用于选择数据库文档所在的文件夹,是数据库真实存放的位置。在该文件夹下,全部以.ns为后缀名的文件都为数据库,即mongodb中数据库真实可见,有物理文件与数据库一一对应。数组

在完成数据库的开机操做以后,咱们必定要让这个cmd面板保持上图所示的状态,不能关闭,不能退出程序。一旦该cmd出现问题,咱们的数据库就自动关闭了。咱们后续的数据库操做须要再开一个cmd
接下去咱们再开一个cmd,输入命令-> mongo 用于链接数据库。当显示以下所示,则说明数据库链接成功。编辑器

图片描述

接下去咱们就进入了mongodb的语法环境下,能够输入命令进行数据库的操做。
咱们用命令-> show dbs来显示当前全部的数据库。(如今只有一些系统默认的数据库文件,这些系统自带的文件,咱们不作任何操做)工具

图片描述

咱们用命令-> use test来表示使用某个数据库,当use一个不存在的数据库则表示新建。以后再用命令-> db来查看当前所在的数据库。咱们在完成test数据库的新建以后,用-> show dbs查看如今全部的数据库,仍然看不到咱们新建的那个数据库,说明咱们想把这个数据库新建成功,则必须往里面插入一条数据。spa

图片描述

mongodb的某个数据库由不少个集合(collection)组成,集合相似于mysql数据库当中数据表的概念,而每个集合又由不少个文档(document)构成。每个文档都是一个json对象,文档相似于mysql数据表当中字段的概念。数据库当中不能直接插入数据,只能往该数据库的某个指定集合当中插入数据,集合不须要新建,一旦咱们往某个集合当中插入数据,就至关于新建了这个集合,而且该集合当中也有了对应的数据。命令行

咱们在cmd当中用命令-> db来肯定当前所在的数据库为test,接下去用命令-> db.student.insert()往该集合当中插入一个json对象。这句操做完成了在test数据库中student这个集合的建立与一条文档数据的插入。接下去可用命令-> show collections来列出当前这个数据库当中全部的集合(其中system.indexes为系统默认的集合,不作任何处理)。用命令-> db.student.find()来列出当前这个数据库中student这个集合当中全部的文档数据。以下图所示:

图片描述

此时能够看到mongo这个文件夹下多了test.0test.ns这两个文件。每一条文档数据都为一个json数据,插入文档时应该让其符合严格的json语法。数据库当中每一条文档数据都会被分配一个惟一的_id属性值。

2、MongoVUE的使用

MongoVUEMongodb的一款可视化管理工具。咱们在完成安装以后,手动启动MongoVUE.exe进入其管理界面。在第一次使用时,在弹出框Connect to Mongo Database当中选择新建,填写以下信息:

图片描述

咱们在server当中填写127.0.0.1,表示链接本地数据库,当输入指定的IP地址还可用于链接远程的数据库。而port端口号为默认的27017便可。保存后选择链接便可。

咱们必定要在完成数据库的开机操做以后,才可使用MongoVUE对该数据库进行链接,不然会显示链接失败。

在完成链接以后咱们能够看到:

图片描述

在该面板的左侧边栏能够看到咱们当前全部的数据库,其中adminlocal为系统默认数据库,咱们不对其作任何处理。其中test是咱们新建的数据库,在其内部的Collections的分支下能够看到该数据库下全部的集合,选中student这个集合(不用对其再展开)右键选择View则能够在右侧面板看到有三种视图可供选择,能够显示这个集合当中全部的文档及数据。

咱们通常在cmd当中进行数据库的增删改查的操做,在可视化面板当中查看数据库当中数据的存储状况,即在命令行当中进行控制操做,在可视化工具当中进行验证。因为可视化工具不能自动刷新,咱们在完成操做以后,须要点击面板左侧的Refresh刷新,而后再选中某个集合右键View才能够查看最新的文档数据。

3、Mongodb数据库的增删改查操做

一、导入数据

咱们以前操做过往test数据库的student集合当中插入一条文档数据,可是用这种方式在控制台当中完成数据导入效率过低。咱们通常把一个集合当中的文档数据用json文件的形式在外部编辑器当中编辑完成以后,统一所有导入数据库的某个集合当中。
在进行导入操做时,要再开一个cmd,而后用命令-> mongoimport --db 数据库名 --collection 集合名 --drop --file json文件的绝对物理路径来进行导入操做。

在上述命令当中,若是数据库与集合名均为不存在的,则一并完成了新建的操做。咱们在外部编辑器当中完成json文件的编辑,后缀名为.json的文件必须能严格遵照json格式,key值必须能加双引号,value值若为字符串类型,也必须加双引号。直接把该文件拖进cmd当中,则自动显示该json文件的绝对物理地址。--drop表示为在往该集合当中导入数据以前先清空这个集合。

图片描述

图片描述

二、查询操做

在完成数据的导入以后,咱们回到以前链接数据库的那个cmd当中,用命令-> db来查看当前的使用的数据库为test,接下去用命令-> db.student.find()来对当前这个数据库的student集合进行查询操做。若find方法当中没有参数则列出该集合当中全部的文档对象。

图片描述

能够在find方法当中传入一个json对象(这里一样须要遵循严格的json语法)表示查询条件。若是有多个条件则在该对象当中,用逗号相隔的键值对表示查询条件之间且的关系。若找到了则输出对应的文档,若没找到则不输出结果,也不会报错。

图片描述

咱们给查询对象的某个属性值加上{$gt:}表示大于符号,{$lt:}表示小于符号。如键入命令-> db.student.find({"score.Math":{$gt:74}})表示查询出数学成绩大于74分的文档对象。

图片描述

咱们在查询对象当中加上$or:[]表示在该数组当中的每个查询条件之间为或的关系,每个查询条件用一个json对象来表示。如键入命令-> db.student.find({$or:[{"age":9},{"score.Math":70}]})表示查询出年龄为9岁或数学成绩为70分的文档对象。

图片描述

咱们能够在调用find方法查询以后,调用sort()方法对查询结果进行排序操做。属性值为1表明为升序排列,属性值为-1则表明为降序排列。如键入命令-> db.student.find().sort({"score.Math":1,"age":-1})表示查询出该集合当中全部的文档数据,先根据数学成绩升序排列,若是数学成绩一致,则根据年龄进行逆序排列。(当有多个排序条件时,则按顺序肯定排序条件的优先级)

图片描述

三、删除操做

键入命令-> db.dropDatabase()便可删除当前这个数据库。键入命令-> db.student.drop()便可删除当前这个数据库当中student这个集合。使用命令-> db.student.remove()当中传入一个查询对象则能够把该集合当中符合该查询条件的文档都删去,如-> db.student.remove({"age":9})则会删调年龄为9的全部文档,若是加上{justOne:true}则只删第一个匹配上的文档。如-> db.student.remove({"age":9},{justOne:true})。使用-> db.student.remove({})能够删除该集合当中的全部文档,达到清空该集合的目的,此时必须能传入一个空对象才行。

四、修改(update)操做

咱们使用命令->db.student.update()方法进行文档修改操做。第一个参数对象表示查询条件,第二个参数对象为修改的条件。如键入命令->db.student.update({"name":"xiaohong"},{$set:{"age":18}})则把名字为小红的文档当中的年龄改成18。当第一个查询条件匹配上多条文档时,默认只对第一条文档数据进行修改,若是想要批量修改,则要加上{multi:true},即->db.student.update({"name":"xiaohong"},{$set:{"age":18}},{multi:true})

图片描述

若是没有$set这个关键字,则表明替换文档。如->db.student.update({"name":"xiaohong"},{"age":18}),则表示把名字为小红这个文档所有替换为{"age":18}

图片描述

五、获取集合当中文档对象的总数

使用命令-> db.student.stats().count或者-> db.student.find().count()都可显示出当前数据库的student这个集合当中文档对象的总数。

图片描述

相关文章
相关标签/搜索