问题标签 [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.
mongodb - 在 mongo shell 中创建 mongo 更改流
MongoDB在其 3.6 版本中引入了变更流。
我想在我的代码中实现 mongo 更改流,并想了解它是如何工作的。我将使用 java 驱动程序来实现,这很清楚。但我想知道是否有任何方法可以在 mongo shell 中打开更改流?在这方面找不到太多资源。
mongodb - MongoDB 聚合:从嵌入式数组中删除一些元素(编辑?)
我正在查询 MongoDB 集合以提取信息,因此只能进行聚合操作(即 no update()
)。
从几个类似这些形状的文档中,每个文档都包含一个嵌入式数组,其中至少有一个带有partNum : "1200664"
字段的文档):
我试图得到以下结果,其中每个文档都保持其形状(因此不允许$unwind
或$replaceRoot
阶段),但所有不满足 a 的嵌入式数组元素{$match: {partNum: "1200664"}}
都被删除:
我在管道阶段做了几次尝试$redact
,但我无法提出有效的调用,更不用说获得与上述类似的任何结果。
我什至想知道$redact
这里的操作是否正确。
ruby-on-rails - NameError:类的未定义方法“选项”
当我创建类的实例时,会引发错误 NameError: undefined method 'options' for class 'Product'。
数据库:MongoDB 3.6
宝石:mongoid(6.1.1)
注意:当我将字段名称更改为option
或其他任何内容时效果很好,只有选项失败。TIA
mongodb - 在 MongoDB 中使用 $lookup
我在mydb数据库中有以下集合:
购买:它包含以下格式的文件:
/li>sales:它包含以下格式的文档:
/li>
我想输出一个包含以下文档的新集合:
其中name是购买集合中客户的名称, cost是他购买的所有物品的成本。
正式地,每个项目的成本定义为:
购买.purchasedItems.qntity/sales.qntity) * sales.cost
WHERE purchase.purchasedItems.i_name=sales.i_name
输出集合中的成本是所有项目成本的总和。
我尝试了以下方法,但它不起作用:
对于我做错的事情以及正确的做法,我将不胜感激。
mongodb - Mongo 3.6 使用 jsonSchema 调试验证
我正在学习 mongodb 大学的课程以学习 3.6 版中的新功能,但我无法解决我的验证器无效的原因。
这就是我创建集合的方式:
然后,我尝试插入这个对象:
收到以下错误:
我的问题是,是否有某种方法可以调试验证器,例如“属性 X 必须是 Y 类型”,而不是获得通用的“文档验证失败”?
mongodb - 按嵌入数组中的文档字段分组,然后按父文档的字段分组
我不知道如何表达这一点,但基本上我想按子数组中的字段对文档进行分组,然后我想按父(根)文档中的字段进行分组,但保留先前的分组。
我希望一个例子在这里有所帮助。
假设我有这些文件,其中有关几个文件的信息custItemNum
几乎按以下方式分组originalFile
:
我想最终得到一个这样的集合,其中第一个分组是 by custItemNumber
,然后是 by originalFile
:
请记住,这些文档已经来自多个聚合步骤,因此没有可用_id
的字段。
到目前为止,我想出了这些聚合阶段(我手动编辑了它的输出以获得上面的结果):
这导致了这个结果:
我被困在这里,想到的任何其他步骤(即 a $replaceRoot : { newRoot: "$itemInfo" }
)都会破坏外部分组。
另外,这些custItemNum
值是动态的,但是 AFAICT 舞台的boundaries
字段$bucket
采用一个常量数组,所以如果有办法在那里传递一个计算数组,我想知道如何。
user-interface - ubuntu 16.04 上的 Mongodb GUI
我想知道是否有与之关联的 GUImongodb 3.6
允许从界面管理数据库。如果是,如何在 Ubuntu 16.04 上安装它。
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 会将它恢复到内存的所有条目加载到内存中。
所以我必须得到一些解决方案,并且:
- 每次它崩溃时,只需运行 mongorestore 命令,让它从中断的地方继续。它可能应该工作,但我觉得这样做有点不安。
- 一次恢复数据库一个集合,但最大的集合大于 5GB,因此它也无法正常工作。
- 将交换或物理内存(临时)添加到容器中,以便在进程用完物理内存后进程不会被杀死。
- 还有什么,希望有更好的解决方案?
mongodb - 使用 auth 将 MongoDB 3.6 作为 brew 服务运行
MongoDB v3.6.4:从 mongo 3.4 迁移到 3.6 之后
从外壳我可以启动数据库并通过身份验证连接到它。
但是,当我使用 brew 启动 mongodb 时,身份验证不起作用,也无法手动进行身份验证。
如何使用身份验证将 mongodb 作为服务运行?
可以通过在 /usr/local/etc/mongod.conf 文件中将授权设置为禁用来选择退出身份验证,但是使用所需的权限运行服务会很好:
完成,检查:
- 这里建议的答案似乎也不正确 - 它不是一个有效的命令
brew services start mongodb --auth --port 27017 --dbpath /usr/local/var/mongodb