MongoDB
文章平均质量分 73
MongoDB基础
吴声子夜歌
个人学习记录
展开
-
MongoDB——JavaAPI详解
【代码】MongoDB——JavaAPI详解。原创 2023-05-08 23:50:58 · 1498 阅读 · 0 评论 -
MongoDB——副本集的同步、选举和回滚
首先,这个成员会做一些记录前的准备工作:选择一个成员作为同步源,在local.me中为自己创建一个标识符,删除所有已存在的数据库,以一个全新的状态开始进行同步:注意,在这个过程中,所有现有的数据都会被删除。如果任何一个成员的oplog都没有参考价值,那么这个成员上的复制操作就会中止,这个成员需要重新进行完全同步(或者是从最近的备份中恢复)。这种情况下,新成员就与同步源的oplog“脱节”:新成员远远落后于同步源,导致新成员的数据同步速度赶不上同步源的变化速度,同步源可能会将新成员需要复制的某些数据覆盖掉。原创 2023-05-08 18:23:26 · 1371 阅读 · 0 评论 -
MongoDB——副本集成员配置
如果确实需要将不创建索引的成员修改为可以创建索引的成员,那么必须将这个成员从副本集中移除,再删除它的所有数据,最后再将它重新添加到副本集中,并且允许它重新进行数据同步。假设其他成员的优先级都是1,只要server4拥有最新的数据,那么当前的主节点就会自动退位,server4会被选举为新的主节点。但是,添加额外的仲裁者,并不能加快选举速度,也不能提供更好的数据安全性。在上面两个数据成员+一个仲裁者成员的情景中,主节点是仅剩的一份完好的数据,它不仅要处理应用程序请求,还要将数据复制到另一个新的服务器上。原创 2023-05-08 17:34:14 · 461 阅读 · 0 评论 -
MongoDB—副本集配置、管理
备份节点收到新的配置文件之后,就会修改自身的配置,并且将新的配置发送给副本集中的其他成员。副本集的其他成员收到新的配置文件之后,会判断配置文件的发送者是否是它们当前配置中的一个成员,如果是,才会用新的配置文件对自己进行重新配置。所以,如果新的配置会修改某些成员的主机名,应该将新的配置发送给主机名不发生变化的成员。如果一个成员远远落后于主节点,你不希望它继续处理读请求时,可以强制让这个成员进人维护模式。实际上,副本集还有更多的限制,如果要创建7个以上成员的副本集,只有7个成员可以拥有投票权,需要将其他成。原创 2023-05-08 16:32:07 · 1282 阅读 · 0 评论 -
MongoDB——副本集构建
主节点负责接收客户端写入数据操作(默认情况下主节点也承担了读的任务,在大访问量情况下,存在访问瓶颈问题)。从节点负责从主节点复制数据,以保证主从节点数据的一致性和安全性。作一台服务器),并可以选择另外一个独立节点作为副本集数据复制管理的仲裁节点(Arbiter Node)。备份节点可能会落后于主节点,可能没有最新写入的数据,所以备份节点在默认情况下会拒绝读取请求,以防止应用程序意外拿到过期的数据。其他节点的联系,一旦主节点出故障,就进行新主节点选举投票,确保新的主节点及时产生并工作。原创 2023-05-08 15:14:09 · 2869 阅读 · 0 评论 -
MongoDB——explain()和hint()
反过来说,大部分使用索引的查询使用的是BtreeCursor(某些特殊类型的索引,比如地理空间索引,使用的是它们自己类型的游标)。如果查询没有使用你希望它使用的索引,于是你使用hint强制MongoDB使用某个索引,那么应该在应用程序部署之前在所指定的索引上执行explain()。最常见的explain()输出有两种类型:使用索引的查询和没有使用索引的查询。如果发现MongoDB使用的索引与自己希望它使用的索引不一致,可以使用hint()强制MongoDB使用特定的索引。原创 2023-05-08 13:49:17 · 536 阅读 · 0 评论 -
MongoDB——写出错机制
个命令是被包装成WriteConcern类被客户端应用程序调用的(从MongoDB2.6版开始,程序员无需直接调用GetLastError命令,通过WriteConcern参数选项确定写操作出错捕捉机制)。但是,在处理电商平台上类似商品订单的高价值数据时,是不允许丢或插入错误数据的。因此,在数据写操作出错时,我们希望能获得第一手的出错信息。MongoDB的写操作命令默认是没有任何出错返回值的,这减少了写操作的等待时间,也就是说,不管有没有写入到磁盘或者有没有遇到错误,它都不会报错。原创 2023-05-08 12:20:04 · 167 阅读 · 0 评论 -
MongoDB——配置文件详解
setParameter : <parameter1> : <value1 > <parameter2> : <value2 > enableLocalhostAuthBypass : false #示例。原创 2023-05-07 23:30:57 · 6871 阅读 · 0 评论 -
MongoDB——更新文档详解
对文档里的子文档值进行修改,可以通过主Key.SubKey的组合来实现指定子文档字段对应值的修改;对于数组值的修改,可以通过Key.Number的方式指定修改数组值,这个特定条件是要修改的文档没有要修改的字段,而且update命令带upsert选项。将$min给出的值与当前文档字段值进行比较,当给定值较小时则修改当前文档值为给定值。将$max给出的值与当前文档字段值进行比较,当给定值较大时则修改当前文档值为给定值。:做加法运算,可以是正数、负数,也可以是小数。:做惩罚运算,可以是正数、负数,也可以是小数。原创 2023-05-07 21:40:43 · 1464 阅读 · 0 评论 -
MongoDB——Mac环境搭建
配置Path,vim打开。添加日志和数据存放文件夹。原创 2023-05-07 17:44:15 · 479 阅读 · 0 评论 -
MongoDB——聚合框架
使用聚合框架可以对集合中的文档进行变换和组合。基本上,可以用多个构件创建一个管道(pipeline),用于对一连串的文档进行处理。这些构件包括筛选(filtering)、投射(projecting)、 分组(grouping)、 排序(sorting)、 限制(limiting)和跳过(skipping)。例如,有一个保存着杂志文章的集合,你可能希望找出发表文章最多的那个作者。假设每篇文章被保存为MongoDB中的一个文档,可以按照如下步骤创建管道。将每个文章文档中的作者投射出来。将作者按照名字排序原创 2021-11-29 00:23:41 · 1117 阅读 · 0 评论 -
MongoDB——特殊的索引和集合
固定集合MongoDB中的“普通”集合是动态创建的,而且可以自动增长以容纳更多的数据。MongoDB中还有另一种不同类型的集合,叫做固定集合,固定集合需要事先创建好,而且它的大小是固定的( 如图6-1所示)。说到固定大小的集合,有一个很有趣的问题:向-一个已经满了的固定集合中插入数据会怎么样?答案是,固定集合的行为类似于循环队列。如果已经没有空间了,最老的文档会被删除以释放空间,新插入的文档会占据这块空间。也就是说,当固定集合被占满时,如果再插入新文档,固定集合会自动将最老的文档从集合中删除。固定集合的原创 2021-11-28 23:40:54 · 834 阅读 · 0 评论 -
MongoDB——索引类型、索引管理
唯一索引唯一索引可以确保集合的每一个文档的指定键都有唯一值。例如,如果想保证文档的username键拥有不同的值,那么可以创建一个唯一索引:试图重复插入:发现有重复的键时抛出异常会影响效率,所以可以使用唯一索引来应对偶尔可能会出现的键重复问题,而不是在运行时对重复的键进行过滤。注意:如果一个文档没有对应的键,索引会将其作为null存储。所以,如果对某个键建立了唯一索引,但插入了多个缺少该索引键的文档,由于集合已经存在一个该索引键的值为null的文档而导致插入失败。有些情况下,一个值可能无法被索原创 2021-11-28 00:08:50 · 851 阅读 · 0 评论 -
MongoDB——数据类型详解
MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型。在不同的编程语言下,这些类型的确切表示有些许差异。基本类型null:用于表示空值或者不存在的字段{"x":null}布尔型:布尔类型有两个值true和false{"x":true}数值:shell默认使用64位浮点型数值。因此,以下数值在shell中shell中是很"正常"的:{"x":3.14}或{"x":3}对于整数值,可使用NumberInt类或NumberLong类:{"x":Numb原创 2021-11-23 00:34:26 · 1428 阅读 · 0 评论 -
MongoDB——聚合操作详解
聚合(Aggregation)为集合文档数据提供各种处理数据方法,并返回计算结果。MongoDB提供了3种方式来执行聚合命令:聚合管道方法map-reduce方法单一目标聚合方法1. 聚合管道方法聚合管道方法又可以直接理解为合计流水线法,就是把集合里若干含数值型的文档记录,其键对应的值进行各种分类统计。该方法支持分片集合操作。db.collection_name.aggregate( [ {$match:{<field>}}, //统计查找条件 {$group:{&l原创 2021-11-21 01:03:32 · 4913 阅读 · 0 评论 -
MongoDB——索引操作详解
MongoDB是基于集合建立索引(Index),索引的作用类似与传统关系型数据库,目的是为了提高查询速度。如果没有建立索引,MongoDB在读取数据时必须扫描集合中的所有文档记录。这种全集合扫描效率是非常低的,尤其在处理大数据时,查询可能需要花费几十秒到几分钟的时间。当建立索引后,查询将扫描索引内容,而不会去扫描对应的集合。但在建立索引的同时,是需要增加额外存储开销的;在已经建立索引的情况下,若新插入了集合文档记录,则会引起索引重排序,这个过程会影响查询速度。MongoDB的索引基于B-tree数据结果及原创 2021-11-20 22:38:56 · 2603 阅读 · 0 评论 -
MongoDB——查询操作详解
查询语法db.collection_name.find( query, //查询条件 projection //可选,指定需要返回的字段;默认返回所有字段)原创 2021-11-19 01:15:27 · 8816 阅读 · 0 评论 -
MongoDB——插入操作详解
插入文档向集合中插入一条或多条文档。语法:db.collection.insert( { //可选字段 writeConcern:<document> ordered: <boolean> }, { //可选字段 writeConcern:<document> ordered: <boolean> }, ...)db为数据库名,collection为集合名,insert为插入文档命令。可选字段:writeCon原创 2021-11-18 17:56:57 · 33285 阅读 · 1 评论 -
MongoDB——数据库相关操作命令
数据库类型原创 2021-11-17 23:56:26 · 703 阅读 · 0 评论 -
MongoDB——基本规则、数据类型
数据库建立基本规则序号注意事项1符合UTF-8标准的字符串2不能是空字符串""3不得含有" "(空格) 、.、$、/、\、\0(空字符)4区分大小写,建议全部小写5名称最多为64字节6不得使用保留的数据库名,如admin、local、config、test集合名称定义规则...原创 2021-11-17 00:09:08 · 1547 阅读 · 0 评论 -
Mongoose--概述
概述之前我们都是通过shell来完成对数据库的各种操作的,在 开发中大部分时候我们都需要通过程序来完成对数据库的 操作。而Mongoose就是一个让我们可以通过Node来操作 MongoDB的模块。Mongoose是一个对象文档模型(ODM)库,它对 Node原生的MongoDB模块进行了进一步的优化封装, 并提供了更多的功能。在大多数情况下,它被用来把结构化的模式应用到一个 Mongo...原创 2020-02-27 15:13:03 · 384 阅读 · 0 评论 -
MongoDB--常用操作示例
//1.进入my_test数据库use my_test//2.向数据库的user集合中插入一个文档 db.users.insert({ username:"sunwukong"});//3.查询user集合中的文档db.users.find();//4.向数据库的user集合中插入一个文档 db.users.insert({ username:"zhub...原创 2020-02-27 12:42:39 · 268 阅读 · 0 评论 -
MongoDB--基本操作
创建数据库use 数据库名使用use时,如果数据库存在则会进入到相应的数据库,如果不存在则会自动创建一旦进入数据库,则可以使用db来引用当前库db.collection.insert(文档)向集合中插入文档,如果集合不存在则创建db.createCollection()创建一个新的集合db.collection.drop()删除集合文档的增删改查插入文档...原创 2020-02-27 12:40:13 · 303 阅读 · 0 评论 -
MongoDB--概述
MongoDB概述MongoDB是为快速开发互联网Web应用而设计的数据库系统。MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分。MongoDB的数据模型是面向文档的,所谓文档是一种类似JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。(BSON)三个概念数据库(database): 数据库是一个仓库,在仓库中可以存放集合。集合(colle...原创 2020-02-26 15:05:19 · 350 阅读 · 0 评论 -
Docker--安装MongoDB
Docker拉取MongoDB查看可用版本:docker search mongo拉取最新版:docker pull mongo:latest查看本地镜像:docker images运行容器:docker run -itd --name mongo -p 27017:27017 mongo --auth参数说明:-p 27017:27017 :映射容器服务的 2701...原创 2020-02-26 14:42:42 · 257 阅读 · 0 评论