MongoDB学习小结

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: (本文来源于我的工作笔记,是刚接触Mongo时整理的)1,mongodb是面向文档类型的层次型数据库,documents -> collections -> databases -> m...

(本文来源于我的工作笔记,是刚接触Mongo时整理的)

1,mongodb是面向文档类型的层次型数据库,documents -> collections -> databases -> mongodb;
2,在需要存储大数据量的情况下使用;
3,操作的语言是js,里面的对象是js生成的,例如mongo,collection,而里面的操作例如:find,sort,insert,update,remove和$等都是用js解析的;
4,mongodb本身可以说就是一个js解析器;
5,mongodb是一个免安装的服务,和redis一样,支持在命令行下运行,也支持后台单进程运行,只需要使用-fork参数;
6,mongodb运行的命令是mongod -dbpath mypath,其中mypath是要指定的数据库的目录;
7,mongodb的bin目录下还有一些常用工具,mongod是服务程序,mongo则是客户端连接工具,mongostat是实时监控工具;
8,mongodb的性能测试报告中指出,mongodb的批量导入与批量导出的性能很高,而其并发处理的能力只是一般,若并发数较大,则命中率会有所降低;
9,我目前使用java连接mongodb的方式有两种:mongo-java-driver和spring-data-mongodb,都不难使用,后者支持spring;
10,mongodb里默认有个主键叫_id,若插入的数据没有指定一个具体的_id,mongodb则会自动生成一个ObjectId,由于mongodb的设计初衷是分布式,所以主键没有自增的功能;
11,mongodb中插入操作有时会变成更新操作,当插入的_id和已经存在的_id相同时;
12,mongodb中判断两个document是否相同是根据_id的;
13,mongodb的分布式是由于支持分片(shard)功能,而其高性能的批量导入与导出是基础;
14,分片就是取其某一子集;--------------MongoDB宏观-------------
1,mongodb是面向文档类型的层次型数据库,documents -> collections -> databases -> mongodb;
2,在需要存储大数据量的情况下使用;
3,操作的语言是js,里面的对象是js生成的,例如mongo,collection,而里面的操作例如:find,sort,insert,update,remove,save和$等都是用js解析的;
4,mongodb本身可以说就是一个js解析器;
5,mongodb是一个免安装的服务,和redis一样,支持在命令行下运行,也支持后台单进程运行,只需要使用-fork参数;
6,mongodb运行的命令是mongod -dbpath mypath,其中mypath是要指定的数据库的目录;
7,mongodb的bin目录下还有一些常用工具,mongod是服务程序,mongo则是客户端连接工具,mongostat是实时监控工具;
8,mongodb的性能测试报告中指出,mongodb的批量导入与批量导出的性能很高,而其并发处理的能力只是一般,若并发数较大,则命中率会有所降低;
9,我目前使用java连接mongodb的方式有两种:mongo-java-driver和spring-data-mongodb,都不难使用,后者支持spring;
10,mongodb里默认有个主键叫_id,若插入的数据没有指定一个具体的_id,mongodb则会自动生成一个ObjectId,由于mongodb的设计初衷是分布式,所以主键没有自增的功能;
11,mongodb中save操作有时会变成updata操作,当save的_id和已经存在的_id相同时;
12,mongodb中判断两个document是否相同是根据_id的;
13,mongodb的分布式是由于支持分片(shard)功能,而其高性能的批量导入与导出是基础;
14,分片就是取其某一子集;


--------------查询与性能---------------
15,查询区分大小写(大小写敏感),虽然可以使用正则表达式,但那样会降低性能;
16,单个文件的大小是有限制的(旧版是4M,新版是16M);
17,高速的写入和更新的原因是没有明确的错误通知(也就是不安全写入),若需要安全写入可用getLastError with 'j',0.1s/次保存到日志;
18,(原文引用)MongoDB使用内存映射文件并且每60秒向磁盘输出一次通知,这就意味着最大程度上你可能丢失60秒加上向硬盘输出通知这段时间内所有的数据。为了避免数据丢失,MongoDB从2.0版本起就添加了Journaling(默认情况下开启)。当然Journaling会轻微的影响到性能,大约5%。但是对于多数人来说额外带来的安全性肯定是物有所值的。


-------------查询与索引------------------
19,最好要创建查询中用到的键的索引,不然MongoDB会做整个表的扫描,那样会影响查询性能,索引的创建方式是db[.集合名].ensureIndex({"键名" : 1},{"background" : true});
20,某个键的索引当且仅当用该键查询时才有用,对于用其他键查询无用;
21,要尽可能少的创建索引,因为插入,更新和删除都会因为索引而带来额外的开销,同样影响到性能;
22,使用{"background" : true}使创建索引的过程在后台完成,这样数据库不会阻塞建立索引时的所有请求;
23,删除索引(system.indexes中会有所有索引名),db.runCommand({"dropIndexes" : "集合名", "index" : "索引名"})


-----------------MongoDB聚合--------------
24,db.collection.count()返回集合中的文档数量;
25,db.runCommand({"distinct" : "集合名", "key" : "键名"}),用来找出指定键的所有不同值;


-----------------MongoDB操作--------------
26,db.collection.save()与db.collection.insert()的区别:insert有判断主键(_id)是否存在,若存在则不做任何操作,而save则不做判断,不存在则insert,存在则update;
27,db.collection.update()默认只更新一条数据,若要更新多条,要加{"multi" : true};
28,后台入口:http://host:http:28017/,需要启动时加-rest参数支持;
29,MongoDB通过db.eval(javascript代码)在服务器端执行javascript代码;


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
4月前
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
【5月更文挑战第10天】本文介绍了MongoDB,一个流行的NoSQL数据库,以其灵活的数据模型和高性能著称。内容包括MongoDB的基础知识、安装配置、文档数据模型、数据库操作(如创建、查询、更新和删除)、索引创建、数据备份恢复及性能优化策略。此外,还探讨了MongoDB在社交网络、电子商务等领域的应用。对于初学者,本文提供了从零开始学习MongoDB的入门指导。
90 0
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
|
4月前
|
存储 NoSQL MongoDB
学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程
Python 需要一个 MongoDB 驱动程序来访问 MongoDB 数据库。我将使用 MongoDB 驱动程序 PyMongo 建议您使用 PIP 来安装 PyMongo。PIP 很可能已经安装在您的 Python 环境中。将命令行导航到 PIP 的位置,然后键入以下内容:
153 1
|
NoSQL MongoDB 数据库
【mongo 系列】mongodb 学习九,MongoDB 主从集群 2
继续咱们 mongodb 集群的学习和分享 上次分享了 mongodb 主从集群的同步机制(oplog),心跳机制,这次我们继续看看选举机
119 0
|
存储 NoSQL MongoDB
【mongo 系列】mongodb 学习七,索引实操练习
向 mydoc 集合中,插入多条数据,mydoc 之前是没有存在过的,我们直接使用 db.mydoc.insertMany() ,mongodb 会默认给我们新建这个集合
120 0
|
9月前
|
存储 NoSQL Linux
小白带你学习linux的MongoDB(三十四)
小白带你学习linux的MongoDB(三十四)
75 1
|
4月前
|
JavaScript NoSQL MongoDB
【Vue学习】 图书管理系统—mongodb的使用(一)
【Vue学习】 图书管理系统—mongodb的使用(一)
|
机器学习/深度学习 分布式计算 NoSQL
【mongo 系列】mongodb 学习四,聚合知识点梳理
数据聚合(Data Aggregation)是指合并来自不同数据源的数据。. 聚类也称聚类分析,亦称为群集分析,是对于统计数据分析的一门技术, 在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息。
296 4
|
SQL NoSQL 关系型数据库
【mongo 系列】mongodb 学习三,常用操作实际操练
可以使用 insert,insertOne,insertMany 插入不同的数据,各取所需,其中 insertMany 用于插入多条数据,当然也可以插入 1 条数据
134 4
|
存储 JSON NoSQL
【mongo 系列】mongodb 学习二,mongodb 的基本使用梳理
• 文档 是 mongodb 的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录
244 4
|
存储 SQL NoSQL
【mongo 系列】mongodb 学习一,基本 nosql 和 mongodb等数据库对比
咱们工作或者学习的过程中,接到一个需求,或者学习一个技能的时候,我们是如何去学习的呢?
132 2