![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MongoDB
琦彦
Find out who you are,and be that person.
展开
-
MongoDB:1-MongoDB和Robomongo安装
下载MongoDB下载地址:http://www.mongodb.org/downloads这里是在windows平台下安装MongoDB,MongoDB还支持其他平台,如OSX,Linux,Solaris等。使用的版本是3.4.9。 下载后,按提示进行安装。 安装完成,将其中的bin目录加入到系统的path环境变量中 准备配置文件及存放目录 配置...原创 2017-10-08 18:42:23 · 862 阅读 · 0 评论 -
MongoDB:20-MongoDB- 正则表达式
正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。许多程序设计语言都支持利用正则表达式进行字符串操作。MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。MongoDB使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。不同于全文检索,我们使用正则表达式不需要做任何配置。使用正则原创 2017-10-30 20:52:27 · 1272 阅读 · 0 评论 -
MongoDB:13-MongoDB- 覆盖索引查询(Covered Queries)
当一个查询的查询条件和查询计划中只包含索引属性时,MongoDB不需要扫描documents或者将documents调入内存中时,这样的查询效率将非常高。当同时满足如下两个条件时,则该查询是Covered Queries:a. 查询中的所有属性都是索引的一部分(all the fields in the query are part of an index);b. 所有查询到的结果中的属性值,都在原创 2017-10-23 08:16:52 · 13883 阅读 · 0 评论 -
MongoDB:21-MongoDB-自增Id
MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识。但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在 counters 集合中实现_id字段自动增长。首先需要建立一个表结构,用于存储你的id信息:db.coun原创 2017-10-31 09:09:46 · 14066 阅读 · 0 评论 -
MongoDB:14-MongoDB- 原子操作
Redis采用的是异步I/O非阻塞的单进程模型,每一条Redis命令都是原子性的。那么mongoDB呢? mongo有哪些原子操作呢?有哪些实现事务性操作的技巧呢?MongoDB 原子操作mongodb不支持事务,所以,在你的项目中应用时,要注意这点。无论什么设计,都不要要求mongodb保证数据的完整性。但是mongodb提供了许多原子操作,比如文档的原创 2017-10-23 13:15:36 · 13551 阅读 · 2 评论 -
MongoDB:22-MongoDB-GridFS
GridFS是MongoDB规范用于存储和检索大文件,如图片,音频文件,视频文件等。这是一种文件系统用来存储文件,但数据存储于MongoDB集合中。GridFS存储文件比其文档大小16MB限制的更大能力。使用GridFS的理由理由如下:1)存储用户产生的文件内容大多数Web应用都允许用户上传文件。当用户使用关系数据库时,这些用户产生的文件会存储在文件系统中原创 2017-10-31 20:05:43 · 12832 阅读 · 0 评论 -
MongoDB:0-和关系型数据库对比,基本数据类型
NoSql简介NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型的数据库 。是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。 关系型数据库中的表都是存储一些结构化的数据,每条记录的字段的组成...原创 2017-10-07 20:12:54 · 942 阅读 · 0 评论 -
MongoDB:15-MongoDB- $isolate
$isolate操作符可以对多个文档的修改提供隔离性。针对其他线程的并发写操作,$isolate保证了提交前其他线程无法修改对应的文档。针对其他线程的读操作,$isolate保证了其他线程读取不到未提交的数据。官网解释:Prevents a write operation that affects multiple documents from yielding原创 2017-10-24 08:23:10 · 12932 阅读 · 0 评论 -
MongoDB:16-MongoDB-索引数组字段和索引子文档字段
MongoDB允许深入文档内部,对嵌套字段和数组建立索引;嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与“正常”索引字段的行为也是一致的。考虑以下文档集合(user ):db.user.insertMany([{ "address": { "province": "HeNan", "city": "ZhengZhou",原创 2017-10-25 08:54:36 · 20672 阅读 · 0 评论 -
MongoDB:17-MongoDB-索引限制及其他限制规则
索引-额外开销每个索引占据一定的存储空间,在进行插入,更新和删除操作时也需要对索引进行操作。所以,如果你很少对集合进行读取操作,建议不使用索引。索引-内存(RAM)使用由于索引是存储在内存(RAM)中,你应该确保该索引的大小不超过内存的限制。如果索引的大小大于内存的限制,MongoDB会删除一些索引,这将导致性能下降。索引-查询限制索引不原创 2017-10-25 20:46:14 · 16152 阅读 · 0 评论 -
MongoDB:18-MongoDB-ObjectId
MongoDB中我们经常会接触到一个自动生成的字段:”_id”,类型为ObjectId。ObjectId构成之前我们使用MySQL等关系型数据库时,主键都是设置成自增的。但在分布式环境下,这种方法就不可行了,会产生冲突。为此,MongoDB采用了一个称之为ObjectId的类型来做主键。ObjectId是一个12字节的 BSON类型字符串。按照字节顺序,依次代表原创 2017-10-26 08:52:04 · 12771 阅读 · 0 评论 -
MongoDB:10-MongoDB 监控
在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能。这样在大流量得情况下可以很好的应对并保证MongoDB正常运作。MongoDB中提供了mongostat 和 mongotop 两个命令来监控MongoDB的运行情况。mongostat 命令mongostat是mongodb自带的状态检测工具转载 2017-10-13 08:45:29 · 12741 阅读 · 0 评论 -
MongoDB:2-MongoDB的基本命令(insert、delete、find、update)
1.展示数据库、数据表show dbs 展示所有数据库 use dbname 进入dbname数据库,大小写敏感,没有这个数据库也不要紧 use 命令后跟的数据库名,如果存在就进入此数据库, 如果不存在就创建,所以这种创建方式又叫隐式创建 注意:使用命令use mydb1创建数据库后,并没有真正生成对应的数据文件, 如果此时退出,此数据库将被删除,只有在此数据库中创建...原创 2017-10-08 19:37:33 · 1720 阅读 · 0 评论 -
MongoDB:9-MongoDB的安全和认证
每个MongoDB实例中的数据库都可以有许多用户。如果开启了安全性检查,则只有数据库认证用户才能执行读或者写操作。在认证的上下文中,MongoDB会将普通的数据作为admin数据库处理。admin数据库中的用户被视为超级用户(即管理员)。在认证之后,管理员可以读写所有数据库,执行特定的管理命令,如listDatabases和shutdown。在开启安全检查之前,一定要至少有一个管理员账号。原创 2017-10-12 08:35:30 · 12617 阅读 · 0 评论 -
Spring Boot集成MongoDB
MongoDB回顾MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。MongoDB支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型,也因为他的存储格式也使得它所存储的数据在Node原创 2017-10-18 08:42:26 · 13816 阅读 · 0 评论 -
MongoDB:4-MongoDB的索引和查询分析(explain)
索引索引就是用来加速查询的。数据库索引与书籍的索引类似:有了索引就不需要翻遍整本书,数据库则可以直接在索引中查找,使得查找速度能提高几个数量级。在索引中找到条目以后,就可以直接跳转到目标文档的位置。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构创建普通索引,使用命令 db.col原创 2017-10-09 16:55:05 · 7356 阅读 · 3 评论 -
MongoDB:3-MongoDB_修改器($inc/$set/$unset/$push/$pop/upsert/save)
对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高效的进行文档更新。更新修改器是中特殊的键,用来指定复杂的操作,比如增加、删除或者调整键,还可能是操作数组或者内嵌文档。1.$inc这个修改器干什么使的呢?看看下面示例的具体操作后的结果即可知道。示例文档:{"uid":"201203","type":"转载 2017-10-08 21:00:07 · 1679 阅读 · 0 评论 -
MongoDB:6-MongoDB的聚合和管道
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。aggregate() 方法MongoDB中聚合的方法使用aggregate()。语法aggregate() 方法的基本语法格式如下所示:db.COLLECTION_NAME.aggregate(原创 2017-10-09 20:20:59 · 645 阅读 · 0 评论 -
MongoDB:5-MongoDB的固定集合(capped collection)
固定集合:指的是事先创建而且大小固定的集合 。固定集合特性:固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。创建固定集合使用命令:db.createCollection(“collectionName”,{capped:true,size:100000,max:100});原创 2017-10-09 20:20:26 · 1092 阅读 · 0 评论 -
MongoDB:7-MongoDB的备份与恢复
MongoDB提供了备份和恢复的功能,分别是MongoDB下载目录下的mongodump.exe和mongorestore.exe文件 备份数据:>mongodump -h dbhost -d dbname -o dbdirectory-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017-d:原创 2017-10-10 08:41:54 · 578 阅读 · 0 评论 -
MongoDB:11-MongoDB 关系
MongoDB 的关系表示多个文档之间在逻辑上的相互联系。文档间可以通过嵌入和引用来建立联系。MongoDB 中的关系可以是:1:1 (1对1)1: N (1对多)N: 1 (多对1)N: N (多对多)接下来我们来考虑下用户与用户地址的关系。一个用户可以有多个地址,所以是一对多的关系。以下是 user 文档的简单结构:{ "_id":Obj转载 2017-10-19 08:20:31 · 12496 阅读 · 0 评论 -
MongoDB:19-MongoDB-Map Reduce
Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。MapReduce 命令以下是MapReduce的基本语法:>db.collection.mapReduce( function()原创 2017-10-27 09:26:13 · 12668 阅读 · 0 评论 -
MongoDB:8-MongoDB的导入(mongoimport)和导出(mongoexport)
导出数据mongoexport -h dbhost -d dbname -c collectionName -o output --type json/csv -f field参数说明:-h 数据库地址-d 指明使用的库-c 指明要导出的集合-o 指明要导出的文件名 --type : 输出的格式,默认为json-f :输出的字段,如果-type为csv,则需要加上-f "字段名"原创 2017-10-11 08:13:40 · 13621 阅读 · 0 评论 -
MongoDB:12-MongoDB 数据库引用(DBRefs vs 手动引用)
数据库引用的意义:mongodb中数据的扫描是按行来扫描的,这意味着如果有一个字段的值长度很长,mongodb不会自动跳过而是将整个文档扫描一遍,当数据量十分密集而这个很长的字段不需要经常被检索时会严重拖慢效率,因此此时可以将其作为引用保存在其他的集合中数据库关系在传统的SQL数据库中,关系被分为一个个表(table),在表中,每个数据项以主键(primary key)标识原创 2017-10-20 09:58:58 · 18153 阅读 · 2 评论 -
MongoDB,真的是正确的选择吗?
MongoDB 是一切数据需求的终极解决方案吗?未必。但 MongoDB 的确是一个正确的选择。前提是,你真的知道你的使用场景和往后可能出现的问题如何解决。写在前面最近,我读到了一篇关于红帽公司的 Satellite 不再支持 MongoDB 的帖子,我也知道很多人认为此举源自许可条款方面的修改。这不禁让我想起过去几年来,一直不断有关于 MongoDB 如何可怕、以及用户不应该将其作为选项...转载 2019-03-28 19:15:21 · 2878 阅读 · 0 评论