MongoDB 教程

分类:后端教程
标签:

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

现在开始学习 MongoDB!

目录

标题 说明
NoSQL 简介 NoSQL 简介NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDMBSs)来处理。 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。
MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
window平台安装MongoDB window平台安装 MongoDBMongoDB 下载MongoDB提供了可用于32位和64位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB预编译二进制包下载地址:注意:在 MongoDB2.2 版本后已经不再支持 Windows XP 系统。
Linux平台安装MongoDB Linux平台安装MongoDBMongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包。下载地址:下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) 。curl -O # 下载tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解压mv/ /mongodb # 将解压包拷贝到指定目录MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:export PATH=<mongodb-in
MongoDB 概念解析 MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。下表将帮助您更容易理解Mongo中的一些概念:SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引table joins 表连接,MongoDB不支持primary keyprima
MongoDB 连接 MongoDB - 连接在本教程我们将讨论 MongoDB 的不同连接方式。启动 MongoDB服务在前面的教程中,我们已经讨论了如何启动MongoDB服务,你只需要在MongoDB安装目录的bin目录下执行'mongod'即可。执行启动操作后,mongodb在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。
MongoDB 创建数据库 MongoDB 创建数据库语法MongoDB 创建数据库的语法格式如下:use DATABASE_NAME如果数据库不存在,则创建数据库,否则切换到指定数据库。实例以下实例我们创建了数据库 rumen5:> use rumen5switched to db rumen5> dbrumen5> 如果你想查看所有数据库,可以使用 show dbs 命令:> show dbslocal0.078GBtest 0.078GB> 可以看到,我们刚创建的数据库 rumen5 并不在数据库
MongoDB 删除数据库
MongoDB 插入文档 MongoDB 插入文档本章节中我们将向大家介绍如何将数据插入到MongoDB的集合中。文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
MongoDB 更新文档 MongoDB 更新文档MongoDB 使用 update() 和 save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。update() 方法update() 方法用于更新已存在的文档。语法格式如下:db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> })参数
MongoDB 删除文档 MongoDB 删除文档在前面的几个章节中我们已经学习了MongoDB中如何为集合添加数据和更新数据。在本章节中我们将继续学习MongoDB集合的删除。MongoDB remove()函数是用来移除集合中的数据。MongoDB数据更新可以使用update()函数。
MongoDB 查询文档 MongoDB 查询文档语法MongoDB 查询数据的语法格式如下:>db.COLLECTION_NAME.find()find() 方法以非结构化的方式来显示所有文档。如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:>db.col.find().pretty()pretty() 方法以格式化的方式来显示所有文档。
MongoDB 条件操作符 MongoDB 条件操作符描述条件操作符用于比较两个表达式并从mongoDB集合中获取数据。在本章节中,我们将讨论如何在MongoDB中使用条件操作符。MongoDB中条件操作符有:(>) 大于 - $gt(<) 小于 - $lt(>=) 大于等于 - $gte(<= ) 小于等于 - $lte我们使用的数据库名称为"rumen5" 我们的集合名称为"col",以下为我们插入的数据。
MongoDB $type 操作符 MongoDB $type 操作符描述在本章节中,我们将继续讨论MongoDB中条件操作符 $type。$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。MongoDB 中可以使用的类型如下表所示:类型数字备注Double1 String2 Object3 Array4 Binary data5 Undefined6已废弃。
MongoDB Limit与Skip方法 MongoDB Limit与Skip方法MongoDB Limit() 方法如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
MongoDB 排序 MongoDB 排序MongoDB sort()方法在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。语法sort()方法基本语法如下所示:>db.COLLECTION_NAME.find().sort({KEY:1})实例col 集合中的数据如下:{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "
MongoDB 索引 MongoDB 索引索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。
MongoDB 聚合 MongoDB 聚合MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。aggregate() 方法MongoDB中聚合的方法使用aggregate()。
MongoDB 复制(副本集) MongoDB 复制(副本集)MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。复制还允许您从硬件故障和服务中断中恢复数据。什么是复制?保障数据的安全性数据高可用性 (24*7)灾难恢复无需停机维护(如备份,重建索引,压缩)分布式读取数据MongoDB复制原理mongodb的复制至少需要两个节点。
MongoDB 分片 MongoDB 分片分片在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
MongoDB 备份(mongodump)与恢复(mongorerstore) MongoDB 备份(mongodump)与恢复(mongorerstore)MongoDB数据备份在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。 mongodump命令可以通过参数指定导出的数据量级转存的服务器。
MongoDB 监控 MongoDB 监控在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能。这样在大流量得情况下可以很好的应对并保证MongoDB正常运作。MongoDB中提供了mongostat 和 mongotop 两个命令来监控MongoDB的运行情况。
MongoDB Java MongoDB Java环境配置在 Java 程序中如果要使用 MongoDB,你需要确保已经安装了 Java 环境及 MongoDB JDBC 驱动。本章节实例时候 Mongo 3.x 以上版本。你可以参考本站的Java教程来安装Java程序。
MongoDB PHP 扩展 MongoDBPHP 扩展本教程将向大家介绍如何在Linux、window、Mac平台上安装MongoDB扩展。Linux上安装 MongoDB PHP扩展在终端上安装你可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动11使用php的pecl安装命令必须保证网络连接可用以及root权限。
MongoDB PHP
MongoDB 关系 MongoDB 关系MongoDB 的关系表示多个文档之间在逻辑上的相互联系。文档间可以通过嵌入和引用来建立联系。MongoDB 中的关系可以是:1:1 (1对1)1: N (1对多)N: 1 (多对1) N: N (多对多)接下来我们来考虑下用户与用户地址的关系。
MongoDB 数据库引用 MongoDB 数据库引用在上一章节MongoDB关系中我们提到了MongoDB的引用来规范数据结构文档。MongoDB 引用有两种:手动引用(Manual References)DBRefsDBRefs vs 手动引用考虑这样的一个场景,我们在不同的集合中 (address_home, address_office, address_mailing, 等)存储不同的地址(住址,办公室地址,邮件地址等)。
MongoDB 覆盖索引查询 MongoDB 覆盖索引查询官方的MongoDB的文档中说明,覆盖查询是以下的查询:所有的查询字段是索引的一部分所有的查询返回字段在同一个索引中由于所有出现在查询中的字段是索引的一部分,MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询结果。
MongoDB 查询分析 MongoDB 查询分析MongoDB 查询分析可以确保我们建议的索引是否有效,是查询语句性能分析的重要工具。MongoDB 查询分析常用函数有:explain() 和 hint()。使用 explain()explain 操作提供了查询信息,使用索引及查询统计等。
MongoDB 原子操作 MongoDB 原子操作mongodb不支持事务,所以,在你的项目中应用时,要注意这点。无论什么设计,都不要要求mongodb保证数据的完整性。但是mongodb提供了许多原子操作,比如文档的保存,修改,删除等,都是原子操作。所谓原子操作就是要么这个文档保存到Mongodb,要么没有保存到Mongodb,不会出现查询到的文档没有保存完整的情况。
MongoDB 高级索引 MongoDB 高级索引考虑以下文档集合(users ):{ "address": {"city": "Los Angeles","state": "California","pincode": "123" }, "tags": ["music","cricket","blogs" ], "name": "Tom Benzamin"}以上文档包含了 address 子文档和 tags 数组。
MongoDB 索引限制 MongoDB 索引限制额外开销每个索引占据一定的存储空间,在进行插入,更新和删除操作时也需要对索引进行操作。所以,如果你很少对集合进行读取操作,建议不使用索引。内存(RAM)使用由于索引是存储在内存(RAM)中,你应该确保该索引的大小不超过内存的限制。
MongoDB ObjectId MongoDB ObjectId在前面几个章节中我们已经使用了MongoDB 的对象 Id(ObjectId)。在本章节中,我们将了解的ObjectId的结构。ObjectId 是一个12字节 BSON 类型数据,有以下格式:前4个字节表示时间戳接下来的3个字节是机器标识码紧接的两个字节由进程id组成(PID)最后三个字节是随机数。
MongoDB Map Reduce MongoDB Map ReduceMap-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。
MongoDB 全文检索 MongoDB 全文检索全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。MongoDB 从 2.4 版本开始支持全文检索,目前支持15种语言(暂时不支持中文)的全文索引。
MongoDB 正则表达式 MongoDB 正则表达式正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。许多程序设计语言都支持利用正则表达式进行字符串操作。MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。MongoDB使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。
MongoDB 管理工具: Rockmongo
MongoDB GridFS MongoDB GridFSGridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 可以更好的存储大于16M的文件。
MongoDB 固定集合(Capped Collections) MongoDB 固定集合(Capped Collections)MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素!创建固定集合我们通过createCollection来创建一个固定集合,且capped选项设置为true:>db.createCollection("cappedLogCollection",{capped:true,size:10000}
MongoDB 自动增长 MongoDB 自动增长MongoDB 没有像 SQL 一样有自动增长的功能,MongoDB 的 _id 是系统自动生成的12字节唯一标识。但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在counters 集合中实现_id字段自动增长。

现在开始学习MongoDB 教程第一章 : NoSQL 简介


本教程固定链接:http://www.rumen5.com/61378.html

上一篇:Memcached 教程

下一篇:MySQL 教程

QQ空间新浪微博腾讯微博人人网微信