2014-03-13 55 views
2

有没有办法迫使蒙戈外壳输出顺序排列的内容在页面上?阵列的输出格式外壳

具体做法是:给定一个数组[8888,8888,8888,8888]

我想它呈现为8888, 8888, 8888, 8888,而不是

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

这是我一直得到。 (实际的阵列有848个8888元素。我知道这个例子会正确打印)

更具体地说,我试图获得Mandelbrot分形的聚合代码,如published by John Page一样。诀窍是保持字体大小非常小。但是,即使将字体大小设置为2并将终端窗口设置为1000列,阵列也会继续垂直打印。

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

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

我已经尝试使用DBQuery.prototype._prettyShell = false作为this answer的对面,因为在Mongo shell中做了漂亮的打印,但没有运气。

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

为了完整性我正在运行的MongoDB外壳版本:2.4.9终端版本2.2.3(303.2)在Mac OS X 10.7.5

非常感谢

(注

:原代码,公布,在最初的 for循环中有2个缺少开放的大括号,我在我的代码中修改了这个,它不是问题的原因,因为聚合产生的最终数组是正确的,他们只是没有正确渲染)

回答

0

为了让你需要的代码工作:

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

固定宽度字体有助于(如@ user3420593笔记),但如果您的输出呈现类似于@NeilLunn发布的图像,那么MongoDB PHP专家Derick Rethans发现了一个工作轮:将整数输出转换为代码为每个'88888'和''(引号之间有5个空格)的5个字符的字符串。

mongo aggregation fractal

0

啊是的。你可能错过了,或者没有完全理解了这条线在该职位:

DBQuery.shellBatchSize = 500 

为了解释,即设置的光标在一次旅行获取文件的数量。因此,一些比默认光标设置更大,这是像25

这里是真正的问题。他使用开发版本要做到这一点,在即将发布的aggregate返回游标,而不是说在当前释放所产生的文件数组。

所以,如果你仍然有兴趣,你可以从downloads page当前的“发布候选”,而应该让你重现的结果。

我没相当那里我自己(并没有更多的时间玩),但它是终端的行和列设置为像什么显示在博客文章和截图的问题为了减少显示的字体大小,缩小终端窗口

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

enter image description here

+0

谢谢,我忘了补充一点,我确实有'DBQuery.shellBatchSize = 500 '设置。即使我没有,我刚刚得到了图像的顶部。 – astebbing

+0

@astebbing是的,但重点是你需要**一个版本大于2.4系列,以便有一个游标。即使你设置了这个值,它也不会为你做任何事情。 –

+0

你正确地猜测,Page先生正在使用开发版本,因为他今天早上发邮件说他正在使用版本2.5 – astebbing

0

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

+0

谢谢。我已将字体设置为固定。现在输出使用Mongo 2.6版水平渲染,但是我得到的图像与下面的@neillunn相同。根据[John Page的原始博客文章](http://ilearnasigoalong.blogspot.co.uk/2013/12/mongo-aggregating-fractals.html),这不像是一个适当的Manelbrot分形,所以我怀疑我有另一个设置错误,因为代码只是复制和粘贴。 – astebbing