MongoDB学习小结

简介: (本文来源于我的工作笔记,是刚接触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代码;


目录
相关文章
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
698 15
|
NoSQL MongoDB 数据库
【mongo 系列】mongodb 学习九,MongoDB 主从集群 2
继续咱们 mongodb 集群的学习和分享 上次分享了 mongodb 主从集群的同步机制(oplog),心跳机制,这次我们继续看看选举机
313 0
|
存储 NoSQL MongoDB
【mongo 系列】mongodb 学习七,索引实操练习
向 mydoc 集合中,插入多条数据,mydoc 之前是没有存在过的,我们直接使用 db.mydoc.insertMany() ,mongodb 会默认给我们新建这个集合
378 0
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
【5月更文挑战第10天】本文介绍了MongoDB,一个流行的NoSQL数据库,以其灵活的数据模型和高性能著称。内容包括MongoDB的基础知识、安装配置、文档数据模型、数据库操作(如创建、查询、更新和删除)、索引创建、数据备份恢复及性能优化策略。此外,还探讨了MongoDB在社交网络、电子商务等领域的应用。对于初学者,本文提供了从零开始学习MongoDB的入门指导。
435 0
【MongoDB 专栏】MongoDB 入门指南:从零开始学习
|
存储 NoSQL MongoDB
学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程
Python 需要一个 MongoDB 驱动程序来访问 MongoDB 数据库。我将使用 MongoDB 驱动程序 PyMongo 建议您使用 PIP 来安装 PyMongo。PIP 很可能已经安装在您的 Python 环境中。将命令行导航到 PIP 的位置,然后键入以下内容:
692 1
|
存储 NoSQL Linux
小白带你学习linux的MongoDB(三十四)
小白带你学习linux的MongoDB(三十四)
325 1
|
机器学习/深度学习 分布式计算 NoSQL
【mongo 系列】mongodb 学习四,聚合知识点梳理
数据聚合(Data Aggregation)是指合并来自不同数据源的数据。. 聚类也称聚类分析,亦称为群集分析,是对于统计数据分析的一门技术, 在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息。
624 4
|
SQL NoSQL 关系型数据库
【mongo 系列】mongodb 学习三,常用操作实际操练
可以使用 insert,insertOne,insertMany 插入不同的数据,各取所需,其中 insertMany 用于插入多条数据,当然也可以插入 1 条数据
257 4
|
存储 JSON NoSQL
【mongo 系列】mongodb 学习二,mongodb 的基本使用梳理
• 文档 是 mongodb 的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录
563 4
|
存储 SQL NoSQL
【mongo 系列】mongodb 学习一,基本 nosql 和 mongodb等数据库对比
咱们工作或者学习的过程中,接到一个需求,或者学习一个技能的时候,我们是如何去学习的呢?
379 2

推荐镜像

更多