2015-01-15 48 views
1

阅读JSON我从使用下面的命令蒙戈出口集合:的Node.js不能从mongoexport

mongoexport -d <database-name> -c <collection-name> -o foo.json 

出口工作的罚款,并产生foo.json这是这样的:

{ 
    "_id" : { "$oid" : "76safuysadf76tsaydgf" }, 
    "name" : "John", 
    "number" : 3 
} 
{ 
    "_id" : { "$oid" : "dfsafuysaasdf7tsayd6" }, 
    "name" : "Fred", 
    "number" : 4 
} 
{ 
    "_id" : { "$oid" : "876sfuyg7rfasff4ffff" }, 
    "name" : "Paul", 
    "number" : 1 
} 

现在我想用node.js读取这个json文件,编辑数据并保存回文件(或新文件)。例如,我想要删除每个用户的number字段。

我在读节点时遇到问题。我尝试这样做:

var fs = require("fs"); 
var obj = JSON.parse(fs.readFileSync("./foo.json")); 
console.log(obj); 

,但我得到了以下错误:

uncaughtException: Unexpected token { 
SyntaxError: Unexpected token { 
+0

尝试删除'JSON.parse',因为它看起来更像是一个JavaScript对象 – adeneo 2015-01-15 16:22:56

+0

@adeneo我那么这在控制台:'<缓冲区7b 20 22 5f 69 64 22 20 3a 20 ...' – Coop 2015-01-15 16:35:17

+0

输出不是JSON数组,它只是详细的,尝试形成一个有效的JSON arrary,然后使用JSON.parse – anish 2015-01-15 16:49:46

回答

4

编辑:mongoexport文档:http://docs.mongodb.org/manual/reference/program/mongoexport/

使用--jsonArray选项的JSON得到输出数组,正如我在我的原始答案中所述。

原来的答案

它看起来像你想的,而不是一个对象来解析JSON数组。尝试添加[]和逗号从mongoexport输出,所以它看起来是这样的:

[{ 
    "_id" : { "$oid" : "76safuysadf76tsaydgf" }, 
    "name" : "John", 
    "number" : 3 
}, 
{ 
    "_id" : { "$oid" : "dfsafuysaasdf7tsayd6" }, 
    "name" : "Fred", 
    "number" : 4 
}, 
{ 
    "_id" : { "$oid" : "876sfuyg7rfasff4ffff" }, 
    "name" : "Paul", 
    "number" : 1 
}] 
+0

谢谢,是的,它是格式化的对象 - 逗号和括号方括号,如你所说。 – Coop 2015-01-15 16:49:55