mongoimport 无法导入 JSON 数据

mongoimport failed to import JSON data

我正尝试按照本文 http://zaiste.net/2012/08/importing_json_into_mongodb/.

中的步骤将名为 breedData.json 的文件导入 mongodb

所以我在终端中从我的应用程序的根文件夹中输入以下命令。 breedData.json 文件也在应用程序根文件夹中。 Mongod和nodemon是运行.

mongoimport --db shelterdoggie --collection breeds --type json --file breedData.json --jsonArray

我明白了:

2015-09-07T00:58:18.646-0700    connected to: localhost
2015-09-07T00:58:18.647-0700    Failed: error reading separator after document #2: bad JSON array format - found '{' outside JSON object/array in input source
2015-09-07T00:58:18.647-0700    imported 0 documents

我用 jsonlint.com 检查了我的文件,它是有效的 json。

我已经尝试将这种 json 格式与上述终端命令一起使用:

[
{"malehw":"Ht: 9-11.5, Wt: 7-9","femalehw":"Ht: 9-11.5, Wt: 7-9"},
{"malehw":"Ht: 27, Wt: 60","femalehw":"Ht: 25, Wt: 50"},
{"malehw":"Ht: 23, Wt: 45","femalehw":"Ht: <23, Wt: 45"}
]

我也尝试过这种格式,同时在上面的命令中去掉了 --jsonArray 标志:

{"malehw":"Ht: 9-11.5, Wt: 7-9","femalehw":"Ht: 9-11.5, Wt: 7-9"}
{"malehw":"Ht: 27, Wt: 60","femalehw":"Ht: 25, Wt: 50"}
{"malehw":"Ht: 23, Wt: 45","femalehw":"Ht: <23, Wt: 45"}

但是我得到这个错误:

2015-09-07T01:11:00.034-0700    connected to: localhost
2015-09-07T01:11:00.035-0700    Failed: error processing document #1: invalid character '{' after array element
2015-09-07T01:11:00.035-0700    imported 0 documents

我检查了文件,有 152 个 {'s 和 152 个 }'s,我的文件中有 152 个 rows/documents,所以这不应该是由于某处未闭合的花括号造成的。我不明白为什么这不起作用。如果您有任何建议,我将不胜感激。

这是我的 .json 文件中的一整行,以防有帮助:

{"malehw":"Ht: 24-26, Wt: 75-95","femalehw":"Ht: 22-24, Wt: 75-95","catfriendly":"••••","easytraining":"••••••","watchdog":"••••••","grooming":"•••","coldtolerant":"••••","care":"Among the most intelligent of breeds, the German Shepherd Dog is so intent on his mission whatever that may be and he is virtually unsurpassed in working versatility. He is utterly devoted and faithful. He is usually good with other pets.","breed":"German Shepherd Dog","health":"This breed needs daily mental and physical challenges. He enjoys a good exercise session as well as learning session. He is family-oriented and does well as a house dog. His coat needs brushing one or two times weekly.","energy":"••••","playfulness":"•••","dogfriendly":"••","strangerfriendly":"•••","protection":"••••••","heattolerant":"••••","exercise":"•••••","affection":"••••","index":67,"url":"https://www.petfinder.com/dog-breeds/German-Shepherd-Dog"}

克莱门特的建议让我走上了正轨。放置文件的完整文件路径有效。终端中的导入命令如下所示:

mongoimport --db shelterdoggie --collection breeds --type json --file ~/dev/shelter_doggie/breedData.json --jsonArray

至于我的 csv 导入尝试,我在 db 之前只有一个破折号,而不是两个破折号。我修复了该问题并添加了 csv 文件的完整文件路径。所以当我 运行 这样的命令时它起作用了:

mongoimport --db shelterdoggie --collection breeds --type csv --file ~/dev/shelter_doggie/kimonoData.csv --headerline

不确定是否有另一种方法可以在没有完整文件路径的情况下执行此操作(如我最初问题中的文章所示),但至少我可以导入我的数据。

在 Windows 上遇到了类似的问题,因此通过标准输入示例

传递数据来修复它
cat "PATH\breedData.json" | mongoimport.exe --db shelterdoggie --collection breeds --type json --file --jsonArray

或 Linux

mongoimport --db shelterdoggie --collection breeds --type json --file --jsonArray < breedData.json