问题标签 [mongodb-3.6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1310 浏览

mongodb - 在 mongo shell 中创建 mongo 更改流

MongoDB在其 3.6 版本中引入了变更流。
我想在我的代码中实现 mongo 更改流,并想了解它是如何工作的。我将使用 java 驱动程序来实现,这很清楚。但我想知道是否有任何方法可以在 mongo shell 中打开更改流?在这方面找不到太多资源。

0 投票
1 回答
5167 浏览

mongodb - MongoDB 聚合:从嵌入式数组中删除一些元素(编辑?)

我正在查询 MongoDB 集合以提取信息,因此只能进行聚合操作(即 no update())。

从几个类似这些形状的文档中,每个文档都包含一个嵌入式数组,其中至少有一个带有partNum : "1200664"字段的文档):

我试图得到以下结果,其中每个文档都保持其形状(因此不允许$unwind$replaceRoot阶段),但所有不满足 a 的嵌入式数组元素{$match: {partNum: "1200664"}}都被删除:

我在管道阶段做了几次尝试$redact,但我无法提出有效的调用,更不用说获得与上述类似的任何结果。
我什至想知道$redact这里的操作是否正确。

0 投票
1 回答
528 浏览

ruby-on-rails - NameError:类的未定义方法“选项”

当我创建类的实例时,会引发错误 NameError: undefined method 'options' for class 'Product'。

数据库:MongoDB 3.6

宝石:mongoid(6.1.1)

注意:当我将字段名称更改为option或其他任何内容时效果很好,只有选项失败。TIA

0 投票
1 回答
1255 浏览

mongodb - 在 MongoDB 中使用 $lookup

我在mydb数据库中有以下集合:

  • 购买:它包含以下格式的文件:

    /li>
  • sales:它包含以下格式的文档:

    /li>

我想输出一个包含以下文档的新集合:

其中name是购买集合中客户的名称, cost是他购买的所有物品的成本。

正式地,每个项目的成本定义为:

购买.purchasedItems.qntity/sales.qntity) * sales.cost

WHERE purchase.purchasedItems.i_name=sales.i_name

输出集合中的成本是所有项目成本的总和。

我尝试了以下方法,但它不起作用:

对于我做错的事情以及正确的做法,我将不胜感激。

0 投票
2 回答
807 浏览

mongodb - Mongo 3.6 使用 jsonSchema 调试验证

我正在学习 mongodb 大学的课程以学习 3.6 版中的新功能,但我无法解决我的验证器无效的原因。

这就是我创建集合的方式:

然后,我尝试插入这个对象:

收到以下错误:

我的问题是,是否有某种方法可以调试验证器,例如“属性 X 必须是 Y 类型”,而不是获得通用的“文档验证失败”?

0 投票
1 回答
2043 浏览

mongodb - 如何在对外部文档保持不同排序的同时对内部数组元素进行排序?

我有一个文档集合,每个文档都有一个嵌入式数组。我需要对每个数组的元素进行排序,而包含的文档应保持原样。

作为一个例子,从这个类似的排序问题中获取数据:

我的预期结果略有不同:

如何在 MongoDB 3.6 中实现这一点?如果可能的话,我想使用聚合管道。

到目前为止,我没有尝试太多,因为我认为适合此的唯一阶段是$sort,但如文档中所述,它将对外部集合进行排序。

0 投票
0 回答
47 浏览

mongodb - 按嵌入数组中的文档字段分组,然后按父文档的字段分组

我不知道如何表达这一点,但基本上我想按子数组中的字段对文档进行分组,然后我想按父(根)文档中的字段进行分组,但保留先前的分组。

我希望一个例子在这里有所帮助。

假设我有这些文件,其中有关几个文件的信息custItemNum几乎按以下方式分组originalFile

我想最终得到一个这样的集合,其中第一个分组是 by custItemNumber,然后是 by originalFile

请记住,这些文档已经来自多个聚合步骤,因此没有可用_id的字段。

到目前为止,我想出了这些聚合阶段(我手动编辑了它的输出以获得上面的结果):

这导致了这个结果:

我被困在这里,想到的任何其他步骤(即 a $replaceRoot : { newRoot: "$itemInfo" })都会破坏外部分组。

另外,这些custItemNum值是动态的,但是 AFAICT 舞台的boundaries字段$bucket采用一个常量数组,所以如果有办法在那里传递一个计算数组,我想知道如何。

0 投票
1 回答
310 浏览

user-interface - ubuntu 16.04 上的 Mongodb GUI

我想知道是否有与之关联的 GUImongodb 3.6允许从界面管理数据库。如果是,如何在 Ubuntu 16.04 上安装它。

0 投票
6 回答
7315 浏览

mongodb - Mongorestore 似乎内存不足并杀死了 mongo 进程

在当前设置中,有两个 Mongo Docker 容器,在主机 A 和 B 上运行,Mongo 版本为 3.4,并在副本集中运行。我想将它们升级到 3.6 并增加一个成员,以便容器可以在主机 A、B 和 C 上运行。容器有 8GB 内存限制并且没有分配交换(当前),并且在Rancher中管理。所以我的计划是启动三个新容器,为它们初始化一个副本集,从 3.4 容器中进行转储,然后将其恢复为新的副本集 master。

转储顺利进行,其大小约为 16GB。当我尝试将其恢复到新的 3.6 主服务器时,恢复开始正常,但在恢复了大约 5GB 的数据后,mongo 进程似乎被 OS/Rancher 杀死,而容器本身没有重新启动,MongoDB 进程只是崩溃并重新加载自己再次备份。如果我再次将 mongorestore 运行到同一个数据库,它会为所有已插入的条目显示唯一键错误,然后从中断处继续,仅在 5GB 左右后再次执行相同操作。因此,似乎 mongorestore 会将它恢复到内存的所有条目加载到内存中。

所以我必须得到一些解决方案,并且:

  1. 每次它崩溃时,只需运行 mongorestore 命令,让它从中断的地方继续。它可能应该工作,但我觉得这样做有点不安。
  2. 一次恢复数据库一个集合,但最大的集合大于 5GB,因此它也无法正常工作。
  3. 将交换或物理内存(临时)添加到容器中,以便在进程用完物理内存后进程不会被杀死。
  4. 还有什么,希望有更好的解决方案?
0 投票
0 回答
1852 浏览

mongodb - 使用 auth 将 MongoDB 3.6 作为 brew 服务运行

MongoDB v3.6.4:从 mongo 3.4 迁移到 3.6 之后

从外壳我可以启动数据库并通过身份验证连接到它。

但是,当我使用 brew 启动 mongodb 时,身份验证不起作用,也无法手动进行身份验证。

如何使用身份验证将 mongodb 作为服务运行?

可以通过在 /usr/local/etc/mongod.conf 文件中将授权设置为禁用来选择退出身份验证,但是使用所需的权限运行服务会很好:

完成,检查:

  1. 这里建议的答案似乎也不正确 - 它不是一个有效的命令brew services start mongodb --auth --port 27017 --dbpath /usr/local/var/mongodb