2

有没有办法强制 Mongo shell 在页面上按顺序输出数组的内容?

具体来说:给定一个数组 [8888, 8888, 8888, 8888]

我希望它呈现为8888, 8888, 8888, 8888而不是

"r" : [
 8888,
 8888,
 8888,
 8888
]

这就是我不断得到的。(实际数组有8888的84个元素。我知道这个例子会打印正确)

更具体地说,我试图让John Page 发布的 Mandelbrot 分形的聚合代码工作。诀窍是保持字体非常小。然而,即使将字体大小设置为 2 并将终端窗口设置为 1000 列,数组仍然会垂直打印出来。

我做了一些实验,根据每个数组元素的大小、字符间距和字体大小,粗略的指南是方括号 [ ] > 50 之间的字符总数或元素数的任何数组> 20 然后阵列垂直打印。

我使用 node.js 在终端 bash shell 中尝试了相同的实验,但没有发生这种情况。所以它似乎是一个 Mongo shell 格式化问题。

我尝试使用DBQuery.prototype._prettyShell = false此答案相反的方法在 Mongo shell 中进行漂亮的打印,但没有运气。

佩奇先生亲自再次测试了代码,并向我保证它可以按预期工作。

为了完整起见,我在 Mac OS X 10.7.5 下运行 MongoDB shell 版本:2.4.9 Terminal Version 2.2.3 (303.2)

非常感谢

(注意:发布的原始代码在初始循环中缺少 2 个左大括号for。我已经在我的代码上修改了这个,这不是问题的原因。由于聚合而产生的 finally 数组是正确的,他们只是没有正确渲染)

4

3 回答 3

0

要使代码正常工作,您需要:

MongoDB 2.5 或更高版本。正如@NeilLunn 指出的那样,输出需要一个游标,以便在页面上打印结果数组。

固定宽度的字体会有所帮助(如@user3420593 所述),但是,如果您的输出呈现为@NeilLunn 发布的图像,那么MongoDB PHP 专家Derick Rethans找到了解决方法:将代码中的整数输出转换为字符串每个 '88888' 和 ' ' 有 5 个字符(引号之间有 5 个空格)。

mongo 聚合分形

于 2014-03-28T14:45:43.880 回答
0

您需要使用固定宽度的字体。每个“像素”的长度必须相同,无论是“8888”还是“1”

于 2014-03-14T15:49:37.623 回答
0

是的。您可能错过或不完全理解的是该帖子中的这一行:

DBQuery.shellBatchSize = 500

解释一下,就是设置游标一次获取的文档数量。所以一个大于默认光标设置的数字,例如 25。

这是真正的重点。他正在使用开发版本来执行此操作,因为在即将发布的版本中,聚合返回一个游标,而不是当前版本中生成的文档数组。

因此,如果您仍然感兴趣,您可以从下载页面获取当前的“候选版本” ,这应该可以让您重现结果。

我自己并没有完全到达那里(并且没有更多时间玩),但问题是将终端列和行设置为类似于博客文章屏幕截图中显示的内容并按顺序缩小终端窗口以减小显示的字体大小。

所以这是可能的,但你只是没有安装相同的工具。

在此处输入图像描述

于 2014-03-14T00:27:01.303 回答