MongoDB入门详细教程

2021/4/11 2:26:37

本文主要是介绍MongoDB入门详细教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、mongodb简介:

mongodb是基于分布式文件存储的数据库,它的特点是:高性能、可扩展、易部署、易使用,存储数据非常方便

 二、下载安装

1.官网地址:https://www.mongodb.com/try/download/community

2.下载完成后,点击安装下载,自定义安装位置,一直点击下一步,直至安装完成。重启电脑。

三、启动配置

3.1 创建目录

在D盘要目录下新建一个mogo_data目录,里面再新建这四个目录文件夹:bin、log、conf、data

3.2 命令行下运行mongodb服务器

切换到安装目录下:执行下面命令:

D:\program files\MongoDB\Server\4.4\bin>mongod --dbpath D:\mongo_data\db

上述截图,代表启动成功。

3.3 连接mongodb

切换到安装目录下:执行下面命令:

D:\program files\MongoDB\Server\4.4\bin>mongo.exe

出现如下截图,代表连接成功。

截图中,可看出mongo shell版本号,连接的数据库信息。

3.4 配置mongodb服务

如上面2.1中,在conf文件夹中,创建一个名为mongod.cfg的文件

文件中配置如下:

systemLog:
    destination: file
    path: D:\mongo_data\log\mongod.log
storage:
    dbPath: mongod.log\db

3.5安装mongodb服务

切换到安装目录下:执行下面命令:

mongod.exe --config "D:\mongo_data\conf\mongod.cfg" --install

执行结果如下:

3.6 启动mongodb(管理员运行方式)

运行命令:net start MongoDB

3.7 关闭mongodb服务

运行命令:net stop MongoDB

2.8 MongoDB 后台管理 Shell

cmd中执行命令:

mongo

可在shell中进行一些运算,如:

四、基本操作

一个mongodb中可以建立多个数据库。

MongoDB的默认数据库为"db",该数据库存储在data目录中。

4.1 基本语法

4.1.1 显示数据列表

show dbs

"local" 是你要链接的数据库。

数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串。

  • 不能是空字符串("")。
  • 不得含有' '(空格)、.、$、/、\和\0 (空宇符)。
  • 应全部小写。
  • 最多64字节。

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

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

4.1.2 显示当前数据库对象或集合

db

4.2.3 使用数据库/集合

use 数据库名
use 集合名

 

 

 

五、mongodb实现增删改查:

1. 增:

A. 插入单条数据

db.集合名.insert(json数据)

如:在test2数据库中的NBA集合中插入数据(james,36)

use test2
db.NBA.insert{'james':36}

 

 

 需要注意的是:如果数据库不存在,集合也不存在,使用上面命令后,则直接创建一个数据库,创建集合并插入数据。

查看是否安装成功

db.NBA.find()

 

 

 如上图,我们并没有插入id,但是,它自动增加了全球唯一的id数据。

B. 插入多条数据:

db.NBA.insert([{'name':'irving','age':29},{'name':'harden','age':30},{'name':'zion','age':20}])

 

 

 再次查询一下,是否真正的插入了数据

 

 

 插入成功。

同时插入20条数据呢?我们不可能一条一条插入吧。我们可以使用for循环来实现,操作如下:

如:我们要插入:A1,A2....A20

for (var i=1;i<=20;i++){
... ... db.NBA.insert({'name':'A'+i,'age':i})}

如下图:

 

 

 但是,看提示只插入了一条?我们不是插入20条数据吗?是不是操作不对?

C. 查询插入数据

我们查询看一下:

 

 

 实际上,我们已经插入了全部数据,但是,它只显示最后一条数据的提示“1”。

2. 查

2.1 查询所有数据

db.NBA.find()

db.集合名.find(),查询所有的数据,上面已经提到过了。

 

 

 2.2 按条件查询数据

需要注意的是:不管怎么查询,id列都会展示。

2.2.1 查询指定列数据

db.NBA.find({},{'name':1)

查看结果:

 

 

 只查出来了name字段的数据,age数据未显示。

2.2.2 查询除了选中列剩余列的数据

db.NBA.find({},{'name':0})

查看效果,跟上面刚好相反:

 

 

 2.3 查询年龄大于16岁的人的信息

 那我们就得先了解一下mongodb的大于小于运算符:

  1. $gt:大于
  2. $lt:小于
  3. $gte:大于或等于
  4. $lte:小于或等于
  5. $in:在什么区间
  6. $nin:不在什么区间

查询大于16岁,开始:

db.NBA.find({age:{$gt:16}})

查看结果:

 

 

 2.4 查询年龄等于20、30、36的人的数据

db.NBA.find({'age':{$in:[20,30,36]}})

结果如下:

 

 另外:可以将数据显示成更加美观:

 db.NBA.find().pretty()

 

 

 

 3. 改

语法:db.集合名.update(条件,新数据[是否新增,是否修改多条])

我们需要再了解一下修改相差参数:

  • $inc :传递
  • $rename :重命名列
  • $set :修改列值
  • unset :删除列

3.1 修改数据库中名为zion更改为luca

db.NBA.update({name:'zion'},{$set:{name:'luca'}})

 

 

 注意:修改的值必须加上引号,否则,会提示未定义:

 

 

 查看结果:

 

 

 3.2 将luca的年龄+1岁

db.NBA.update({name:'luca'},{$inc:{age:1}})

 

 

同样的,有加当然也有减。再来,由于手误,年龄改错了,再改回原来的:

db.NBA.update({name:'luca'},{$inc:{age:-1}})

 

 

 

 3.3 综合复杂练习

A. 插入数据:name:steven,age:31,xb:男

db.NBA.insert({name:'steven',age:31,xb:'男'})

 

 

 B.  修改name为:curry

db.NBA.update({name:'steven'},{$set:{name:'curry'}})

 

 

 C. 将其年龄增加1岁

db.NBA.update({name:'curry'},{$inc:{age:1}})

 

 

 

D. 修改xb列为sex

 db.NBA.update({name:'curry'},{$rename:{xb:'sex'}})

 

 

 

E. 删除性别数据

db.NBA.update({name:'curry'},{$unset:{'sex:'男'}})

 

 F. 修改数据不存在,加参数true可插入数据

db.NBA.update({name:'book'},{$set:{age:25}},true)

true参数意义:无该条数据时,则插入。

 

 G. 将多条数据,年龄都改成28岁

db.NBA.update({},{$set:{age:28}},false,true)

true代表全部

默认为flase不写

 4. 删

语法:db.集合名.remove(条件,[是否删除一条])

true是,false否默认,删除第1条数据

db.NBA.remove({},true)

 

 

 

 如果删除全部数据,则不加条件:

db.NBA.remove({})

 

工作中慎用。 

5. 排序和筛选

语法:db.集合名.find().sort().skip(数字).limit(数字)

skip可选,1代表升序,-1代表降序

5.1 按年龄降序排列,只查询2两数据

首先定义表结构:

 

 查询两条数据以倒序排列

db.CBA.find().sort({age:-1}).limit(2)

 

 

数据库的基本操作,暂时介绍到这里,下一期,将介绍用mongo实现接口开发简易接口,并测试。

 



这篇关于MongoDB入门详细教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程