首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么用$out聚合两个集合永远不会结束?MongoDB

$out是MongoDB中的聚合操作符之一,用于将聚合管道的结果输出到一个新的集合中。在使用$out聚合两个集合时,可能会出现永远不会结束的情况,原因如下:

  1. 集合命名冲突:如果输出的集合名称与已存在的集合名称冲突,聚合操作将无法完成。因此,在使用$out时,需要确保输出的集合名称不与已存在的集合名称相同。
  2. 写入权限不足:如果当前用户对输出集合没有写入权限,聚合操作将无法完成。在使用$out时,需要确保当前用户具有足够的权限来写入输出集合。
  3. 内存限制:如果聚合操作的结果集太大,超出了系统内存的限制,聚合操作可能会被中断或失败。在这种情况下,可以考虑使用更高性能的硬件或增加系统内存来解决问题。
  4. 死锁:如果在聚合操作期间存在其他并发操作,可能会导致死锁情况。在使用$out时,需要确保没有其他并发操作正在对相关集合进行写入或修改。

总结起来,使用$out聚合两个集合可能不会结束的原因主要包括集合命名冲突、写入权限不足、内存限制和死锁等。在实际应用中,需要注意这些问题,并根据具体情况进行调整和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

轻松掌握 MongDB 流式聚合操作

数据在聚合操作的过程中,就像是水流过一节一节的管道一样,所以 MongoDB 中的聚合又被人称为流式聚合。...MongoDB 提供了几种聚合方式: •Aggregation Pipeline •Map-Reduce•简单聚合 接下来,我们将全方位地了解 MongoDB 中的聚合。...out out 的作用是聚合 Pipeline 返回的结果文档,并将其写入指定的集合。要注意的是,out 操作必须出现在 Pipeline 的最后。...: {$push: "$title"}}}, ... { $out : "books_result" } ... ]) 命令执行后,MongoDB 将会创建 books_result 集合,并将分组结果保存到该集合中...$reduce function 在分组操作期间对文档进行聚合操作的函数。该函数有两个参数:当前文档和该组的聚合结果文档。必填。 initial document 初始化聚合结果文档, 必填。

4.7K20

MongoDB 4.2 亮点功能之——按需式物化视图

基于聚合的创建集合听起来就像是$out,它是聚合框架中的一个执行阶段,从很早的MongoDB 2.6就有了。$out阶段可以获取聚合结果,将其放到新的集合中,并用新的结果完全替换掉集合中原来的内容。...这一过程很有用,但会大量消耗CPU和IO资源,因为每次都要重新生成整个集合。至少$out的操作是原子级的,它构建了一个临时集合,而且,只有在聚合管道完成工作后才进行交换。...该操作是由$merge的两个属性控制的,分别称为whenMatched和whenNotMatched。默认情况下,将whenMatched属性设置“merge",表示合并两个文档。...该属性也可设置“replace",表示完全替换为新的文档;如果属性设置“keepExisting",文档即保持原状;如果属性设置“fail",则可以在出现重复时中止聚合执行。...例如,它可以读取或写入分片集合的数据($out只能读取分片集合的数据),这就允许你的物化视图能够跨越多个分片,从而水平扩展集合

1.9K10

【翻译】MongoDB指南聚合——聚合管道

MongoDB提供了三种执行聚合的方式:聚合管道,map-reduce方法和单一目的聚合操作。 聚合管道 MongoDB聚合框架模型建立在数据处理管道这一概念的基础之上。...聚合管道表达式能够仅作用于管道中的当前文档并且不会涉及其他文档数据:聚合管道表达式支持在内存中执行文档转换。...然而,在$project阶段使用这些累加器时,这些累加器不会保存它们的状态到文档中。 1.3 聚合管道行为 在MongoDB聚合命令作用于一个集合,在逻辑上将整个集合传入聚合管道。...对于要运行在多个分片上的聚合操作,如果操作不需要运行在数据库的主分片上,这些操作将会路由结果到任意分片来合并结果以避免数据库主分片过载。 $out阶段和$lookup阶段需要运行在数据库主分片上。...1.8 邮政编码数据集上的聚合操作 示例中使用集合zipcodes ,这个集合可以从:http://media.mongodb.org/zips.json处获得。

3.9K100

【DB应用】数据库之mongodb简述

存储在集合中的文档,被存储键-值对的形式。键用于唯一标识一个文档,字符串类型,而值则可以是各种复杂的文件类型。...MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询 (5)强大的聚合工具。...MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapReduce 完成复杂的聚合任务 (6)支持复制和数据恢复。...例如,对于一个博客系统,可能包括blog.user 和blog.article 两个集合,这样划分只是让组织结构更好一些,blog 集合和blog.user、blog.article 没有任何关系。...Admin 数据库:一个权限数据库,如果创建用户的时候将该用户添加到admin 数据库中,那么该用户就自动继承了所有数据库的权限 Local 数据库:这个数据库永远不会被负责,可以用来存储本地单台服务器的任意集合

1.4K50

MongoDB入门(四)

,其中最常用的有布尔管道聚合操作、集合操作、比较聚合操作、算术聚合操作、字符串聚合操作、数组聚合操作、日期聚合操作、条件聚合操作、数据类型聚合操作等。...$setIsSubset 包含 如果第一个集合的所有元素都出现在第二个集合中,包括当第一个集合等于第二个集合时,返回'true';i、 不是严格的子集。只接受两个参数表达式。...如果这两个值是数字,则返回差值。 如果这两个值是日期,则返回以毫秒单位的差值。 如果这两个值是日期和毫秒数,则返回结果日期。 接受两个参数表达式。...如果这两个值是日期和数字,请首先指定日期参数,因为从数字中减去日期没有意义。 $trunc 将数字截断其整数。...一年从第一周的星期一开始(ISO 8601),到最后一周的星期日结束(ISO 8601)。

28220

MongoDB中的限制与阈值

MongoDB不会将任何具有索引字段的文档插入到索引集合中,该文档的索引字段的对应索引条目将超过索引键限制,而是将返回错误。MongoDB的早期版本将插入此类文档,但不会为其创建索引。...如果集群上的操作主要是读取操作和更新,则此限制可能不会影响集群。 避免此约束,请使用哈希分片键或选择一个不会单调增加或减少的字段。 哈希分片键和哈希索引存储具有升序值的键的哈希值。...聚合管道操作 流水线级的RAM限制为100MB。如果阶段超出此限制,则MongoDB将产生错误。要允许处理大型数据集,请使用allowDiskUse选项启用聚合管道阶段以将数据写入临时文件。...提示 另请参考: $sort与内存限制 $group操作符与内存 聚合以及读关注 从MongoDB 4.2开始,out阶段不能与"linearizable"级别的读关注结合使用。...由于会话将永远不会超过30分钟的空闲超时,因此游标可以无限期保持打开状态。 对于MongoDB驱动程序,请参考驱动程序文档中有关创建会话的说明和语法。

14K10

开始使用MongoDB之前应该知道的14件事

忘记限制MongoDB的攻击面 MongoDB的安全检查清单降低网络渗透和数据泄露风险提供了很好的建议。我们很容易会认为,开发服务器不需要高等级的安全。...创建大文档集合 MongoDB乐于把最大16MB的文档置于集合中,而GridFS设计用于超过16MB的大文档。但是,可以容纳大文档并不意味着那是一个好主意。...MongoDB给了你更多的控制,但这种便利是有成本的。 像Studio 3T这样的工具使构建准确的MongoDB聚合查询变得更容易。...它的聚合编辑器特性使你可以一次对一个阶段应用管道操作符,你可以在每个阶段验证输入和输出,更便于调试。 使用快速写 永远不要把MongoDB设为低稳定性的高速写。...除非你设置multi参数,更新匹配查询条件的所有文档,否则它不会更新集合里的所有文档。这一点不是那么明显。

4.5K20

【mongo 系列】聚合知识点梳理

集合名字.estimatedDocumentCount() 粗略的计算文档的个数,是一个估计值 db.集合名字.count() 计算文档的数量,是通过聚合来计算的 db.集合名字.distinct()...linux 里面的管道,下一个指令的输入是上一个指令的输出 db.集合名.aggregate(,) pipelines 一组数据聚合阶段,除了 out , Merge...,管道操作不必每个输入文档都生成一个输出文档 除分组操作外,还可执行复杂的聚合任务以及对不断增长的数据集执行增量聚合 灵活性 限于聚合管道支持的运算符和表达式 自定义 map , reduce 以及...finalize javascript 函数提供了灵活性以及聚合逻辑 输出结果 返回结果作为游标,如果管道包括一个 $out 或者 多个 $merge 阶段,则光标空 以各种选项 内联,新收集,合并,...替换,缩小,返回结果 分片 支持非分片和分片输入集合 支持非分片和分片输入集合 再详细的对比,可以查看官网 https://docs.mongodb.com/manual/reference/map-reduce-to-aggregation-pipeline

3.6K60

使用 MongoDB 之前应该知道的 14 件事

忘记限制 MongoDB 的攻击面 MongoDB 的 安全检查清单 降低网络渗透和数据泄露风险提供了很好的建议。我们很容易会认为,开发服务器不需要高等级的安全。...创建大文档集合 MongoDB 乐于把最大 16MB 的文档置于集合中,而 GridFS 设计用于超过 16MB 的大文档。但是,可以容纳大文档并不意味着那是一个好主意。...MongoDB 在单个文档的大小几 KB 时表现最好,处理它们的方式更像宽 SQL 表的行。大文档会导致 多种性能问题 。 使用大数组创建文档 文档可以包含数组。...它的聚合编辑器特性使你可以一次对一个阶段应用管道操作符,你可以在每个阶段验证输入和输出,更便于调试。 使用快速写 永远不要把 MongoDB 设为低稳定性的高速写。...除非你设置 multi 参数,更新匹配查询条件的所有文档,否则它不会更新集合里的所有文档。这一点不是那么明显。

1.9K30

MongoDB 基础浅谈

仲裁节点永远只能是仲裁节点。 8.2 复制集选主 MongoDB 的副本集协议(又称为 pv1),是一种 raft-like 协议,即基于 raft 协议的理论思想实现,并且对之进行了一些扩展。...10 MongoDB 聚合 MongoDB 聚合框架(Aggregation Framework)是一个计算框架,功能是: 作用在一个或几个集合上。 对集合中的数据进行的一系列运算。...MongoDB 提供了三种执行聚合的方法:聚合管道,map-reduce 和单一目的聚合方法(如 count、distinct 等方法)。...当存储引擎检测到两个操作之间存在冲突时,将引发写冲突,从而导致 MongoDB 自动重试该操作。...15.2 变更流特点 change stream 允许外部程序访问实时数据更改,而不会增加 MongoDB 基础操作的复杂性,也不会导致 oplog 延迟的风险。

1.4K30

数据库信息速递 MONGODB 6.0 的新特性,更多的查询函数,加密查询,与时序数据集合 (译)

应该是非常了解和熟悉的,但是我错了,截止到现在,传统的DBA 对于MONGODB 一部分人还是一头雾水,时代不同了,不会MOGNODB 的DBA,如同你吃饭,只有刀叉,没有筷子,筷子更简单,更多变,适应的场景和变化更多...MongoDB 云产品副总裁 Andrew Davidson 表示。MongoDB 最初的吸引力在于开发人员提供了一种更简单的存储、索引和检索文档(而不是将这些工作转换成 SQL)的方式。...密钥永远不会离开应用程序,并且该公司声称查询速度和整体应用程序性能不会受到新功能的影响。...在时间序列集合中,可以对测量值进行二级索引,并且数据库系统已经优化,以更快地对时间基础的数据进行排序。...这在多个位置使用数据进行测试、分析和备份铺平了道路。 更好地支持分析(Analytics):MongoDB 中的分析节点现在可以单独进行扩展,从而实现更好的分配。

41340

MongoDB 4.2亮点功能之——管道更新功能和查询功能

我们将向你介绍该命令的工作方式,再介绍新的聚合运算符以及4.2版本中的表达式,你提供更多选项——三角函数、正则表达式和当前时间。 无处不在的管道 在何处使用聚合管道的问题现在已经发生了重大转变。...首先,让我们创建一个文档: 过去,如果我们想获取val1和val2的total(合计值),由于无法引用经过更新的字段,我们只能获取该文档,将两个变量相加,然后更新文档。...聪明的MongoDB用户可能永远不会计算合计值并保存它,他们知道聚合管道有一个$sum运算符。...它可以将值数组加进来,并使用$ notation引用相应字段,如下所示: 这个操作并未将数据持久化: 现在的情况是,这条聚合命令会处理整个集合的数据。...平滑算子 在MongoDB 4.2推出之前,通用的三角函数计算功能是缺失的几项功能之一。在MongoDB 4.2中,一整套三角函数表达式被添加到聚合框架中,避免了功能缺失的风险。

2.5K10

时间序列数据和MongoDB:第b三部分 - 查询,分析和呈现时间序列数据

流经阶段的数据及其相应的处理称为聚合管道。从概念上讲,它类似于通过Unix shell命令行管道的数据流。数据从前一阶段输入,执行工作,并且阶段的输出用作下一个处理阶段的输入,直到管道结束。...图1:通过聚合管道的示例数据流 $match是第一阶段在这两个阶段的管道中。 $match将整个订单集合作为输入,并提供一个过滤器,其中包含文档列表,其中“status”包含“A”值。...一个有用的功能是通过将数据处理阶段组装到画布上,然后将生成的管道导出用于复制和粘贴到应用程序的代码,从而可视化地构建聚合管道。...创建的两个集合中的一个称为“StockDocPerMinute”(PerMinute),它包含一个文档,表示特定股票代码的一分钟数据,如下所示。 ?...这些视图充当只读集合,并在读取操作期间按需计算。由于它们显示另一个集合,因此您可以通过限制对视图的基础集合的访问来添加一层安全性,并为客户端提供对该视图的读取访问权限。

3.7K20

mongodb11天之屠龙宝刀(六)mapreduce:mongodb中mapreduce原理与操作案例

mongodb11天之屠龙宝刀(六)mapreduce:mongodb中mapreduce原理与操作案例 一 Map/Reduce简介 MapReduce 是Google公司的核心模型,用于大规模数据集...MapReduce将负责的运行于大规模集群上的并行计算过程高度地抽象两个函数(Map和Reduce),利用一个输入集合来产生一个输出地对集合。...二 Map/Reduce过程 MongoDB中的Map/Reduce对于批量处理数据进行聚合操作是非常有用的。在思想上它跟Hadoop一样,从一个单一集合中输入数据,然后将结果输出到一个集合中。...a.在orders集合上进行MapReduce操作,首先使用query进行“过滤”操作,选择出 status’A’的所有文档。...,这部分返回的就是结果中的value值; **out:** , // 输出到某一个集合中,注意本属性来还支持如果输出的集合如果已经存在了,那是替换,合并还是继续reduce?

2K60

mongodb11天之屠龙宝刀(六)mapreduce:mongodb中mapreduce原理与操作案例

mongodb11天之屠龙宝刀(六)mapreduce:mongodb中mapreduce原理与操作案例 原文连接:直通车 一 Map/Reduce简介 MapReduce 是Google...MapReduce将负责的运行于大规模集群上的并行计算过程高度地抽象两个函数(Map和Reduce),利用一个输入集合来产生一个输出地对集合。...二 Map/Reduce过程 MongoDB中的Map/Reduce对于批量处理数据进行聚合操作是非常有用的。在思想上它跟Hadoop一样,从一个单一集合中输入数据,然后将结果输出到一个集合中。...a.在orders集合上进行MapReduce操作,首先使用query进行“过滤”操作,选择出 status’A’的所有文档。...,这部分返回的就是结果中的value值; **out:** , // 输出到某一个集合中,注意本属性来还支持如果输出的集合如果已经存在了,那是替换,合并还是继续reduce?

92940

时间序列数据和MongoDB:第三部分 - 查询,分析和呈现时间序列数据

流经阶段的数据及其相应的处理称为聚合管道。从概念上讲,它类似于通过Unix shell命令行管道的数据流。数据从前一阶段输入,执行工作,并且阶段的输出用作下一个处理阶段的输入,直到管道结束。...图1:通过聚合管道的示例数据流 $match是第一阶段在这两个阶段的管道中。 $match将整个订单集合作为输入,并提供一个过滤器,其中包含文档列表,其中“status”包含“A”值。...一个有用的功能是通过将数据处理阶段组装到画布上,然后将生成的管道导出用于复制和粘贴到应用程序的代码,从而可视化地构建聚合管道。...创建的两个集合中的一个称为“StockDocPerMinute”(PerMinute),它包含一个文档,表示特定股票代码的一分钟数据,如下所示。 ?...这些视图充当只读集合,并在读取操作期间按需计算。由于它们显示另一个集合,因此您可以通过限制对视图的基础集合的访问来添加一层安全性,并为客户端提供对该视图的读取访问权限。

4.2K20
领券