【问题标题】:node.js cannot read json from mongoexportnode.js 无法从 mongoexport 读取 json
【发布时间】:2015-03-14 02:44:30
【问题描述】:

我使用以下命令从 mongo 导出了一个集合:

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

Export 运行良好并生成了 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 字段。

我在使用 node.js 读取文件时遇到问题。我试过这个:

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

但我收到以下错误:

uncaughtException: Unexpected token {
SyntaxError: Unexpected token {

【问题讨论】:

  • 尝试删除JSON.parse,因为它看起来更像一个javascript对象
  • @adeneo 我然后在控制台中:&lt;Buffer 7b 20 22 5f 69 64 22 20 3a 20...
  • 输出不是 JSON 数组,它只是冗长的,尝试形成一个有效的 JSON 数组,然后使用 JSON.parse

标签: javascript json node.js mongodb


【解决方案1】:

编辑: 来自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
}]

【讨论】:

  • 谢谢,是的,它是对象的格式 - 正如你所说的,逗号和括起来的方括号。
猜你喜欢
  • 2012-10-14
  • 2017-05-28
  • 2018-07-23
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多