Javascript mongodb打印不带空格的json,即不带空格的json

Javascript mongodb打印不带空格的json,即不带空格的json,javascript,mongodb,Javascript,Mongodb,我正在使用mongodb 2.2.0,并尝试在一行中打印json,而不是使用printjson()或find().pretty()进行“漂亮”打印。i、 e.我需要以json格式列出的文档,只需运行命令db.collection.find().limit(10),但我需要使用javascript文件中的光标完成,如下所示: var cursor = db.collection.find().sort({_id:-1}).limit(10000); while(cursor.hasNext()){

我正在使用mongodb 2.2.0,并尝试在一行中打印json,而不是使用
printjson()
find().pretty()
进行“漂亮”打印。i、 e.我需要以json格式列出的文档,只需运行命令
db.collection.find().limit(10)
,但我需要使用javascript文件中的光标完成,如下所示:

var cursor = db.collection.find().sort({_id:-1}).limit(10000);
while(cursor.hasNext()){
    //printNonPrettyJson(cursor.next()); //How???!
}
mongo mydatabase myjsfile.js >> /tmp/myoutput.txt
> db.zips.find().limit(2)
{ "city" : "ACMAR", "loc" : [ -86.51557, 33.584132 ], "pop" : 6055, "state" : "A
L", "_id" : "35004" }
{ "city" : "ADAMSVILLE", "loc" : [ -86.959727, 33.588437 ], "pop" : 10616, "stat
e" : "AL", "_id" : "35005" }
>
print()
不起作用,它只是打印一些关于对象标识符的胡言乱语

之所以要这样做,是因为我正在从控制台调用javascript文件,然后将输出传递到一个文件,如下所示:

var cursor = db.collection.find().sort({_id:-1}).limit(10000);
while(cursor.hasNext()){
    //printNonPrettyJson(cursor.next()); //How???!
}
mongo mydatabase myjsfile.js >> /tmp/myoutput.txt
> db.zips.find().limit(2)
{ "city" : "ACMAR", "loc" : [ -86.51557, 33.584132 ], "pop" : 6055, "state" : "A
L", "_id" : "35004" }
{ "city" : "ADAMSVILLE", "loc" : [ -86.959727, 33.588437 ], "pop" : 10616, "stat
e" : "AL", "_id" : "35005" }
>
编辑:我希望输出如下:

var cursor = db.collection.find().sort({_id:-1}).limit(10000);
while(cursor.hasNext()){
    //printNonPrettyJson(cursor.next()); //How???!
}
mongo mydatabase myjsfile.js >> /tmp/myoutput.txt
> db.zips.find().limit(2)
{ "city" : "ACMAR", "loc" : [ -86.51557, 33.584132 ], "pop" : 6055, "state" : "A
L", "_id" : "35004" }
{ "city" : "ADAMSVILLE", "loc" : [ -86.959727, 33.588437 ], "pop" : 10616, "stat
e" : "AL", "_id" : "35005" }
>
而不是像:

> db.zips.find().limit(2).pretty()
{
        "city" : "ACMAR",
        "loc" : [
                -86.51557,
                33.584132
        ],
        "pop" : 6055,
        "state" : "AL",
        "_id" : "35004"
}
{
        "city" : "ADAMSVILLE",
        "loc" : [
                -86.959727,
                33.588437
        ],
        "pop" : 10616,
        "state" : "AL",
        "_id" : "35005"
}
>
正如所有其他方法所给出的那样。同样,我需要使用游标对象进行打印。

请尝试
print(tojson())
-中有一个使用游标打印的示例


您始终可以为此进行JS破解:

> db.tg.find().forEach(function(doc){ print(tojson(doc).replace(/(\r\n|\n|\r|\s)/gm, '')); })
{"_id":ObjectId("511223348a88785127a0d13f"),"a":1,"b":1,"name":"xxxxx0"}

不漂亮但有效

如果每个项目都有{}个括号,并且没有其他项目,则使用正则表达式在括号中将其拆分

这将把它分成{..}{..}个项目。但是,如果有嵌套的{},它将不起作用

var res = s.match(/\{(.|\s)*?\}/g);
if(res) for(var x=0;x<res.length;x++){
    // print  res[x].replace(/\s+/g," ");// w/o spaces
}
var res=s.match(/\{(.\124;\ s)*?\}/g);

如果(res)for(var x=0;x这里是我在命令行中使用的

mongoexport -d $dbname -c $collection -q '{ "id" : -1 }'
不确定是否可以使用“排序”和“限制”对其进行排序/限制,结果可以自定义。
var cursor = db.collection.find().sort({_id:-1}).limit(10000);
while(cursor.hasNext()){
    printjsononeline(cursor.next());
}

使用mongoexport--type=csv,结果可以打印到csv文件中,可以用xls或一行读取。

正如我在问题中所说,我不想使用printjson。还有其他选择吗?是的,很抱歉-这是一个复制/粘贴错误-我更新了以显示我在文档中找到的内容。不,不起作用。如这里所述:,
printjson()
print(tojson())
那么
db.collection.find().forEach(function(myDoc){print(myDoc);})
Nope,这只会让我再次打印
[object bson\u object]
光标上显示的“胡言乱语”是什么?我猜它打印的对象类型是
[object bson_object]
非常感谢!我真不敢相信没有一种方法可以打印没有空格的简单json!为什么这么难?!我已经在桌子上捶了两个小时了:(@PlastyGrove确实,我不知道他们为什么没有添加一个minify函数,只是为了完整性,我想补充一点,您可以使用
()
执行正则表达式捕获,并在替换参数中使用它作为
“$1”
你能打印示例输出吗?我不确定你的意思。表示文档的每个JSON字符串可以有两个以上的大括号。将此更改为答案,因为它更直截了当,所以在这个答案中非常成功!但是数组和逗号在哪里?我如何添加它们?我认为使用
fo可以进一步简化rEach
db.collection.find().sort({u id:-1}).limit(10000).forEach(printjsononeline)