MongoDb的基本操做快速入门

1.MongoDb简介mysql

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

   特色:内部执行引擎为JS解释器,把文档存储成BSON结构,在查询时,转换为JS对象,并能够经过熟悉的JS语法来操做。sql

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

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

   文档数据库:表下的每篇文档均可以有本身独特的结构或者属性和值。json

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

1)首先下载mongodb安装包:数组

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

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

#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()

2、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})


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

相关文章
相关标签/搜索