问题标签 [mongo-shell]

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 回答
2290 浏览

mongodb - eval 内联 mongodb 副本集配置

我可以通过以下方式设置 mongodb 副本集:

config.jsjavascript配置文件在哪里:

但不能内联:

得到错误:

我尝试使用--eval

它给了我输出:

但是没有创建副本集。

为什么我需要内联创建副本集配置?因为我正在创建一个大sh文件,首先启动所有 mongo 节点,然后启动副本集。我在那里使用 bash 变量,例如$port1, $port2$port3以保持 bash 代码干燥。因此,如果我要使用而不是内联配置,我必须在我的文件和文件config.js中编辑端口号 2 次。shconfig.js

那么如何在config.js文件中而不是使用 bash 命令启动副本集呢?

0 投票
1 回答
575 浏览

bash - mongo eval 不评估通过 env 变量给出的 eval 表达式

我正在尝试制作一个“包装器”bash 别名函数来评估 mongo 片段

我将片段存储为 env 变量

我执行的事情

但它不执行操作。这只是

$ mongoshelleval $delsessions
MongoDB shell 版本:2.4.8
Thu Aug 07 03:50:18.809 versionArrayTest 通过
连接到:db
Thu Aug 07 03:50:18.861 创建新连接到:127.0.0.1:27017
Thu Aug 07 03:50: 18.867 BackgroundJob 开始:ConnectBG
Thu Aug 07 03:50:18.870 已连接连接!
db.sessions.drop()
Thu Aug 07 03:50:18.880 释放 1 个未收集的类 mongo::DBClientWithCommands 对象

不抛出任何错误。只是打印回参数db.sessions.drop()

会话仍然存在

$ mongoshell
MongoDB shell 版本:2.4.8
连接到:db
db.sessions.find()
{ "_id" : "yr5rxguSbb32Q880Jj36Rq2_uU
{ "_id" : "9PQh_ml5Gloiaunv6pbgVevM_6
{ "_id" : "OacGUyf-V1DcTQIg3lMgFXUL-N
{ "_id" : "GC7gh09iqVUny9HM8gnGl9Hzxt
{ "_id" : "_f4koE0tagJ7vwuU76BatcDeEb
{ "_id" : "t1CX_eqi7FcCREfBB2X5CpgOcz

为什么它不做我打算做的事情,如果它不执行查询,为什么它不抛出任何错误?

0 投票
1 回答
875 浏览

mongodb - MongoDB shell 中的“it”代表什么?

find当 a 的结果太长而无法在终端中显示时,您会看到它。

很有可能“它”只是代表,但我不确定,我似乎找不到任何关于它的文档。据我所知,“it”也可能是“increment through”的缩写。

这是什么意思,在终端中使用“it”进行分页是惯例吗?

0 投票
1 回答
39331 浏览

javascript - 循环遍历所有 Mongo 集合并执行查询

首先,我对 mongodb 很陌生。这是我的问题,我无法找到解决方案。

假设我有 3 个不同的集合。

我想创建一个脚本来迭代这个数据库中的所有集合,并在每个集合中找到最后插入的时间戳。这是在 mongos 中有效的方法。

1. 问题(遍历所有集合)

有没有可能做某事。喜欢。

问题在这里,分配my_collections不起作用。我明白了SyntaxError: Unexpected identifier。我需要引用“显示”声明吗?甚至可能吗?

2.问题(在js var中存储集合)

我可以通过这样做来解决问题 1:

产生以下last_element.next()错误:

错误 hasNext: false 在 src/mongo/shell/query.js:124

似乎 last_element 没有正确保存。

关于我做错了什么的任何建议?


更新

尼尔斯的回答让我找到了这个解决方案。除了他的代码之外,我还必须检查该函数是否getTimestamp真的存在。对于某些“虚拟”集合,似乎没有 _id 属性。

0 投票
2 回答
4136 浏览

javascript - 如何在 mongo shell 中“要求(模块)”

我正在编写一个用于数据管理的 mongo shell 脚本。我想使用将函数库用作模块的模块化代码来编写它。在某些情况下,我自己的模块。在其他情况下,仔细选择 node.js 模块(我知道它们可以在 Mongo shell 环境中工作,例如 uuid)。

不幸的是,Mongo 缺乏真正的模块管理。load() 不是一回事。我正在寻找一个回填,因为它是。

有谁知道可以提供 CommonJS 模块加载功能的库,该库足够通用以在 Mongo shell 中运行,或者已被移植以在 Mongo shell 中运行?

是的,我知道,我可以在纯 node.js 环境中完成。但是,如果有一个真正的模块加载器可以在 mongo shell 中工作,那将是我的首选。

0 投票
2 回答
4298 浏览

mongodb - 我如何在 MongoDB 中查询操作日志(Oplog)?

我想查询 oplog 以查找在特定时间进行的操作。如何在 MongoDB 中查找和查询 oplog。oplog放在哪里?请举例说明...我在互联网上找不到任何教程...

0 投票
2 回答
4995 浏览

mongodb - MongoDB:在集合中的数百万条记录上查找 count() 命令的执行时间?

我正在尝试查找对包含数百万条测试数据记录的集合执行 count() 所需的时间,并具有以下场景:-

1)从第一个 Mongo shell 我使用代码将数百万条记录插入到集合中

2)从 2ndMongo shell 我试图在该集合上找到 count() (Imp:虽然插入仍在第一个 Mongo Shell 上执行)

我研究但发现 explain() 和 stats() 不能应用于 count() 命令。

一些

我需要找出当有插入进行收集时 count() 需要多少时间(类似于现场场景)?

有没有其他好的方法可以做到这一点?

0 投票
1 回答
3682 浏览

mongodb - 为什么 shardCollection 命令在 mongo shell 脚本中不起作用

我正在尝试在 mongo shell 脚本中执行以下命令:

但它什么也没做。

但是,当我从脚本执行时:

我得到了所有的帮助选项。

所以意味着 'sh' 变量也可以在 mongo shell 脚本中使用。

那为什么我不能通过 mongo shell 脚本执行 shardCollection 呢?

编辑:感谢尼尔的评论.. 这是我的 mongo shell 脚本

每个集合中的每个文档a,b,c都有一个字段“shardKey”(带索引)。因此,“shardKey”有助于将具有特定 shardKey 的文档保存在一个分片上。

现在当我去 mongo shell 并运行时

我得到的输出为

并在此处列出没有集合的分片。表示sh.shardCollection不工作。

0 投票
1 回答
2731 浏览

mongodb - 使用外部编辑器从 MongoDB 编辑对象不会更新对象

我正在使用 Mongo shell。我已将我的 EDITOR 设置为我的记事本++ 路径。我创建了一个对象,然后使用 EDIT 命令使用 notepad++ 编辑对象,但它不会更新对象。

我错过了什么?

0 投票
1 回答
6318 浏览

mongodb - 无法使用身份验证制作基本的 mongo shell 脚本

我有一个非常复杂的问题,我想我可以通过编写一个 mongo shell 脚本来解决,但我什至无法建立一个简单的连接。我有一个本地 mongo 数据库,它需要一个我通常访问的用户名/密码,如下所示:

此时我输入密码并万岁!我有一个贝壳。但这对我的问题不起作用。作为测试,我创建了一个名为 test.js 的文件,其中包含以下内容:

然后我从命令行运行脚本,如下所示:

在这一点上我得到这个:

为什么我没有结果?