mongo shell中的数组输出格式

时间:2014-03-13 22:31:40

标签: mongodb mongodb-shell

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

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

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

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

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

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

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

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

我尝试使用DBQuery.prototype._prettyShell = false作为this answer的反面,以便在Mongo shell中进行漂亮的打印,但没有运气。

佩奇先生亲自对该代码进行了亲切测试,并向我保证它的工作正常。

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

非常感谢

(注意:原始代码,如已发布,在初始for循环中有2个缺少开口花括号。我在我的代码上修改了它,这不是问题的原因。最后的数组是由于聚合的结果是正确的,它们只是无法正确渲染)

3 个答案:

答案 0 :(得分:0)

啊,是的。您可能错过了,或者没有完全理解的是该帖子中的这一行:

DBQuery.shellBatchSize = 500

解释一下,即设置光标在一次旅行中获取的文件数量。所以一个大于默认光标设置的数字就像是25。

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

因此,如果您仍然感兴趣,可以从downloads page获取当前的“候选版本”,这样可以让您重现结果。

我没有相当自己去那里(没有更多的时间玩),但这是将终端列和行设置为类似于屏幕截图中显示的内容的问题。博客文章和缩小终端窗口,以减少显示的字体大小。

所以可能,但您没有安装相同的工具。

enter image description here

答案 1 :(得分:0)

您需要使用固定宽度的字体。每个像素&#39;需要长度相同,无论是8888&#39;&#39; 8888&#39;或者&#39; 1&#39;

答案 2 :(得分:0)

使代码工作所需:

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

固定宽度字体有帮助(如@ user3420593注释)但是,如果您的输出呈现像@NeilLunn发布的图像,那么MongoDB PHP专家Derick Rethans找到了一个工作轮:转换整数在代码中输出每个5个字符的字符串&#39; 88888&#39;和&#39; &#39; (引号之间有5个空格)。

mongo aggregation fractal