千家信息网

MongoDb的基本操作快速入门

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,1.MongoDb简介mongodb是一个基于分布式存储的开源数据库系统又被称为文档数据库,可以将数据存储为一个文档,数据结构有键值对(key=>value)对组成,存储的文档类似于JSON对象(BS
千家信息网最后更新 2026年11月03日MongoDb的基本操作快速入门

1.MongoDb简介

mongodb是一个基于分布式存储的开源数据库系统又被称为文档数据库,可以将数据存储为一个文档,数据结构有键值对(key=>value)对组成,存储的文档类似于JSON对象(BSON->JSON的二进制化)。

特点:内部执行引擎为JS解释器,把文档存储成BSON结构,在查询时,转换为JS对象,并可以通过熟悉的JS语法来操作。

mongodb和传统数据库简单比较,最大的不同:

传统型数据库:结构化数据,定好了表结构后,每一行的内容,必定是符合表结构的,就是说列的个数以及类型都一样。

文档数据库:表下的每篇文档都可以有自己独特的结构或者属性和值。

2.MongoDb的安装(centos7下详细安装步骤)

1)首先下载mongodb安装包:

#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.4.tgz

2)进入到下载的目录,将mongodb的安装包解压到指定的目录中:

#tar -xvf mongodb-linux-x86_64-rhel70-3.4.4.tgz -C /usr/local

3)进入解压到的目录,来启动mongodb服务

#cd /usr/local

重命名MongoDb解压的目录

#mv mongodb-linux-x86_64-rhel70-3.4.4 mongodb#cd mongodb

4)启动MongoDb

#mkdir -p /home/mongodata/ /var/log/mongolog/#./bin/mongod --dbpath /home/mongodata/ --logpath /var/log/mongolog/mongo.log --fork --port 27017

启动参数说明:

--dbpath 数据存储目录

--logpath 日志存储目录

--port 运行端口

--fork 后台运行

5)通过客户端连接到MongoDb

#./bin/mongo

注意:在一些老的版本中MongoDb启动的时候会事先占用很多磁盘空间,启动后可能需要占3-4G空间,如果虚拟机的空间过小将不能启动,但是它有一个选项--smallfiles可以使启动时占用空间缩小至400M左右。

3.mongodb具体操作示例

一 、mongodb的入门操作:

1)查询所有库列表

>show dbs;

2)切换数据库(选择使用的数据库)

>use local;

3)创建数据库

(注意:由于mongodb数据库是隐式创建没有直接的创建数据库的方法,但可以直接使用use切换到一个事先不存在的库下边,当创建表(collections)的时候会自动创建当前数据库)

>use shop

(假设shop库不存在,也可以直接使用use)

>db.createCollection('user');

(可以在一个不存在的库下边直接创建collections(或者可以说创建表))

>show dbs;

然后你再去查看库的时候会发现库shop已经默认创建出来了。

4)创建一个表(collections)

>db.createCollection('user')

注意:表(也就是collections)也可以是隐式创建的,还拿上边的例子说:假如shop库里边不存在一个goods的表(collections),我们仍然可以使用下边的方式插入数据

>db.goods.insert({_id:1,name:'pipixia',price:52.10});

然后我们去查看shop这个库内的表(collections)时,发现goods已经被自动创建出来了。

5)向collections(表)中插入单篇文档(数据)(插入的数据为json格式)

>db.user.insert({name:'张三',age:18})

6)查找collections(表)中的内容

>db.user.find()

7)删除collections(表)()

>db.user.drop()

8)删除数据库(databases)

>db.dropDatabase()

二、mongodb的基本操作(增、删、改、查)CURD

1.增操作:insert

注意:mongodb存储的是文档,而所谓的文档在这里其实是json格式的对象

1)增加单篇文档

>db.collectionName.insert({sn:'001',name:'xiaoming'})

2)增加单篇文档,并指定id

>db.collectionName.insert({_id:2,sn:'002',name:'xiaohong'})

3)增加多篇文档(因为json是一个对象,js里边有数组的概念,只需把多个对象放到数组里即可)

>db.collectionName.insert([{sn:'003','name':'zhangfei'},{sn:'004','name':'guanyu'},{sn:'004','name':'liubei'}])

2.删操作:remove

语法:db.collectionName.remove(查询表达式,选项)

选项是指{justOne:true/false},是否删一行,默认是false

注意:

1.查询表达式依然是一个json对象

2.查询表达式匹配到的行将被删除

3.如果没有查询表达式,则collections中的所有文档将全部被删除

1)删除指定json文档(json格式的对象)

例如:删除collectionName表中sn属性值为002的json对象文档

>db.collectionName.remove({sn:'002'})

2)假如查询表达式为空,如下

>db.collectionName.remove()

会删除库中的所有文档,使用要小心

3)假如我们想删除符合查询表达式中的一行数据可以使用上边提到的《选项》功能,如

>db.collectionName.remove({"name":"zhangsan"},true)

则只会删除所有name符合zhangsan的其中一条文档数据

3.改操作:update

语法:db.collectionName.update(查询表达式,新值,选项)

1)查询表达式是指需要修改谁,新值是指改成什么样,选项是指可选参数

例如:

>db.collectionName.update({name:'zhangfei'},{name:'zhangfeifei'})

查看一下更改结果

>db.collectionName.find()

将会发现修改后的文档中就剩下id和name列了,而sn列不见了

原因:新文档直接替换了旧的文档,而不是修改

2)但是我们可以使用$set来指定修改某一列

>db.collectionName.update({name:'guanyu'},{$set:{name:'guanyunchang'}})

修改时的赋值表达式

$set 修改某个列的值

$unset 删除某个列

$rename 重命名某个列

$inc 增大某个列的值

3)来一个复杂的更新操作

先插入一条数据

>db.collectionName.insert({name:'caocao',age:40,sex:'m',addr:'wei')

修改这条数据

>db.collectionName.update({name:'caocao'},{$set:{name:'caoaman'},$unset:{addr:1},$rename:{sex:'gender'},$inc:{age:10}})

4)第三个可选参数option的作用:

{upsert:true/false,multi:true/false}

upsert是指没有匹配的行,则直接插入该行。(和mysql中的replace类似)

例如:

>db.collectionName.update({_id:100},{name:'liubei'},{upsert:true})

如果没有_id为100的文档,则直接插入该文档。

注意:如果既没有_id为100的文档,又没有upsert可选参数,则该跟新操作不会对表中的文档造成影响。

multi是指要不要改多行

即如果查询表达式匹配到多行默认情况下只会更改一行,如果要想修改多行,则需要使用此选项。

例如:

>db.collectionName.update({sex:'m'},$set:{sex:'w'},{multi:true})

会把collectionName中所有sex=m的文档都修改为sex=w

4.查操作:find,findOne

语法:db.collection.find(查询表达式,查询的列)

例如:

1)查询所有文档

>db.collectionName.find()

2)查询所有文档的sex属性(列)

>db.collectionName.find({},{sex:1})

3)查询所有文档的sex属性,不查询_id属性

>db.collectionName.find({},{sex:1,_id:0})


注意:无论增删改查都离不开一个查询表达式,以上的示例都是比较简单的入门操作



文档 数据 查询 数据库 表达式 对象 存储 目录 结构 属性 一行 参数 空间 语法 单篇 时候 格式 多行 上边 传统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技官网 互联网科技深圳 猪兼强互联网科技 互联网科技的英文 百单互联网科技有限公司 丰台科技园 互联网 无线互联网科技 互联网科技ppt模板 互联网科技logo 重庆科技学院互联网 深圳卡尔迅互联网科技有限公司怎么样 深圳国际航运科技和互联网 互联网数据科技专业 滨湖区互联网智能科技产品有哪些 伍佰万互联网科技怎么赚钱 电子商务与互联网科技的关系 西安左小互联网科技有限公司 银川新华互联网科技学校原画 绵阳真晨互联网科技有限公司 互联网科技创业有什么好项目 万易互联网科技 奇酷互联网络科技 互联网科技公司的市场部门 湖北码尼互联网科技有限公司电话 卓翼科技产业互联网合作 云鲸互联网络科技有限公司 陕西九四连强互联网科技有限公司 福仕德教育科技互联网 伍佰万互联网科技是干嘛的 互联网科技创业有什么好项目
0