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

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

时间: 2024-10-12 13:08:08

MongoDb的基本操作快速入门的相关文章

Python中list(列表)、tuple(元组)、dict(字典)基本操作快速入门

最近看了一下Python的列表.字典以及元组等几种数据类型,感觉这几种数据类型比较常用,顺便总结了一下一些比较常用的用法. 列表是Python中比较常用的数据类型,并且列表是可以改变的,使用也非常简单,具体操作如下: 1)如创建一个列表: list1 = [1,2,3] list2 = ['a','b','c'] list3 = [1,2,3,'a','b','abc'] list4 = [1,[2,3],['a','b',''c]] #创建一个有序列表 list5 = range(10) #创

前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供数据库来存储数据,目前在各大培训机构都会有1天左右的课程进行讲解,同时在实际来发中我们有存储数据和文件的需求,我们需要了解后台数据存储和提供的数据接口,以及如何获取数据,解析数据,也就是我们常说的前后端交互,数据访问等操作,首先我们来启动mongdb服务器. mongodb服务器启动的命令窗口方法:

[你必须知道的NOSQL系列]专题二:Redis快速入门

一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这里就不想继续介绍了,需要用到的朋友到官方文档进行查阅:http://docs.mongodb.org/manual/tutorial/remove-indexes/.本专题将介绍另一个NoSQL——Redis的相关内容. 二.Redis介绍 关于Redis大家肯定多多少少都有所了解,Redis一般都

Redis快速入门及实现

redis的概念 (1)Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作. 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等.这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决. 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Red

python RESTful API框架:Eve 快速入门

Eve是一款Python的REST API框架,用于发布高可定制的.全功能的RESTful的Web服务,帮你轻松创建和部署API,本文翻译自Eve官方网站: http://python-eve.org/quickstart.html#database-interlude Eve 快速入门: 渴望开始吗?这个页面将提供Eve一个很好的介绍.在这之前假设: 你已经安装好了Eve.如果你还没有,可以点击到安装页面. 已经安装了MongoDB. 并且MongoDB 已经运行了. 一个最小的应用 一个最小

EntityFramework6 快速入门教程

EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕了不少弯路. 学习EF还是需要一些条件,使用EF并不意味着你就可以完全不跟数据库打交道了,要学好EF,数据库中的什么主键.外键.索引.SQL等你还是要懂,另外EF中将大量使用LINQ来进行数据查询,数据模型中还将涉及到特性与泛型,所以对于C#的基础要求还比较高. 在我看来EF并不适合初学者使用,虽然

MPLS VPN 快速入门(张洋讲解版)

MPLS VPN 快速入门(张洋讲解版) 课程目标: 本课程所描述MPLS VPN从零开始学习的内容,为后面MPLS VPN设计和规划的高级教程打下坚实的基础,本课核心目标是:一.从真正意义上去理解MPLS的工作原理:二.学习MPLS VPN架构的基本组件,包括VRF.VPN.RD.RT.BGP标签.MP-BGP:三.融合几大组件从而真正意义的学习基本的MPLS VPN的基本架构. 课程位置:http://edu.51cto.com/course/course_id-5556.html 第一课:

Celery 快速入门

Celery 快速入门 任务队列 任务队列用于分发工作给不同线程或机器. Celery通过消息传递 支持多个workers和brokers.提供高可用和水平扩展性. 用Python写的 优点 简单 高可用 快 易扩展 支持 Brokers RabbitMQ, Redis MongoDB, ZeroMQ CouchDB, SQLAlchemy Django ORM, Amazon SQS, ... Result Stores AMQP, Redis memcached, MongoDB SQLAl

?HealthKit开发快速入门教程之HealthKit数据的操作

HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道一天走的步数.本章将主要讲解HealthKit数据构成的方式,以及如何规范的表达一个数据. 2.1  数据的操作 在HealthKit中,数据都是与单位和值组成的,如图2.1所示.此图为一个睡眠分析的截图.在此图中59m就代表了一个数据.其中m为单位,59为基于单位的数值.本节将讲解数据的创建.判断