无法将json文件导入Mongo

时间:2016-04-15 21:32:58

标签: mongodb mongoimport

我有一个JSON文件(来自Mongo大学),里面有一些JSON

但是,当我运行导入时:

PS C:\Program Files\MongoDB\Server\3.0\bin> .\mongoimport.exe -d blog -c posts --drop posts.json

我收到错误,没有导入任何内容:

2016-04-15T22:21:27.771+0100    connected to: localhost
2016-04-15T22:21:27.772+0100    dropping: blog.posts
2016-04-15T22:21:28.635+0100    error inserting documents: lost connection to server
2016-04-15T22:21:28.635+0100    Failed: lost connection to server
2016-04-15T22:21:28.640+0100    imported 0 documents

从服务器:

2016-04-15T22:21:22.070+0100 I CONTROL  [initandlisten] MongoDB starting : pid=8860 port=27017 dbpath=F:\Mongo\ 64-bit host=Plod
2016-04-15T22:21:22.071+0100 I CONTROL  [initandlisten] targetMinOS: Windows Server 2003 SP2
2016-04-15T22:21:22.072+0100 I CONTROL  [initandlisten] db version v3.0.11
2016-04-15T22:21:22.072+0100 I CONTROL  [initandlisten] git version: 48f8b49dc30cc2485c6c1f3db31b723258fcbf39
2016-04-15T22:21:22.072+0100 I CONTROL  [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, pl
atform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
2016-04-15T22:21:22.072+0100 I CONTROL  [initandlisten] allocator: tcmalloc
2016-04-15T22:21:22.073+0100 I CONTROL  [initandlisten] options: { storage: { dbPath: "F:\Mongo\" } }
2016-04-15T22:21:22.079+0100 I JOURNAL  [initandlisten] journal dir=F:\Mongo\journal
2016-04-15T22:21:22.079+0100 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2016-04-15T22:21:22.117+0100 I JOURNAL  [durability] Durability thread started
2016-04-15T22:21:22.118+0100 I JOURNAL  [journal writer] Journal writer thread started
2016-04-15T22:21:22.234+0100 I NETWORK  [initandlisten] waiting for connections on port 27017
2016-04-15T22:21:27.770+0100 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:5047 #1 (1 connection now open)
2016-04-15T22:21:27.772+0100 I COMMAND  [conn1] CMD: drop blog.posts
2016-04-15T22:21:28.084+0100 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:5048 #2 (2 connections now open)
2016-04-15T22:21:28.231+0100 I -        [conn2] Assertion: 10334:BSONObj size: 33609065 (0x200D569) is invalid. Size must be betwe
en 0 and 16793600(16MB) First element: insert: "posts"
2016-04-15T22:21:28.610+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\util\stacktrace_win.cpp(175)                       mon
go::printStackTrace+0x43
2016-04-15T22:21:28.611+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\util\log.cpp(134)                                  mon
go::logContext+0x8f
2016-04-15T22:21:28.611+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\util\assert_util.cpp(219)                          mon
go::msgasserted+0xce
2016-04-15T22:21:28.611+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\util\assert_util.cpp(211)                          mon
go::msgasserted+0x13
2016-04-15T22:21:28.612+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\bson\bsonobj.cpp(73)                               mon
go::BSONObj::_assertInvalid+0x40c
2016-04-15T22:21:28.612+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\db\dbmessage.cpp(131)                              mon
go::DbMessage::nextJsObj+0x1a0
2016-04-15T22:21:28.612+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\db\dbmessage.h(302)                                mon
go::QueryMessage::QueryMessage+0x6a
2016-04-15T22:21:28.613+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\db\instance.cpp(194)                               mon
go::receivedQuery+0xbf
2016-04-15T22:21:28.613+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\db\instance.cpp(377)                               mon
go::assembleResponse+0x2fd
2016-04-15T22:21:28.614+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\db\db.cpp(205)                                     mon
go::MyMessageHandler::process+0xb8
2016-04-15T22:21:28.614+0100 I CONTROL  [conn2] mongod.exe    ...\src\mongo\util\net\message_server_port.cpp(232)              mon
go::PortMessageServer::handleIncomingMsg+0x553
2016-04-15T22:21:28.614+0100 I CONTROL  [conn2] mongod.exe    ...\src\third_party\boost\libs\thread\src\win32\thread.cpp(185)  boo
st::`anonymous namespace'::thread_start_function+0x21
2016-04-15T22:21:28.615+0100 I CONTROL  [conn2] mongod.exe    f:\dd\vctools\crt\crtw32\startup\threadex.c(376)                 _ca
llthreadstartex+0x17
2016-04-15T22:21:28.622+0100 I CONTROL  [conn2] mongod.exe    f:\dd\vctools\crt\crtw32\startup\threadex.c(354)                 _th
readstartex+0x102
2016-04-15T22:21:28.622+0100 I CONTROL  [conn2] KERNEL32.DLL                                                                   Bas
eThreadInitThunk+0x22
2016-04-15T22:21:28.629+0100 I CONTROL  [conn2]
2016-04-15T22:21:28.630+0100 I NETWORK  [conn2] AssertionException handling request, closing client connection: 10334 BSONObj size
: 33609065 (0x200D569) is invalid. Size must be between 0 and 16793600(16MB) First element: insert: "posts"
2016-04-15T22:21:28.642+0100 I NETWORK  [conn1] end connection 127.0.0.1:5047 (0 connections now open)

发生了什么事?

我用3.0和3.2尝试过它。

4 个答案:

答案 0 :(得分:6)

根据https://jira.mongodb.org/browse/TOOLS-939,有一个错误会影响某些版本的mongoimportmongorestore导致mongoimport命令失败。

要解决此问题,您可以将--batchSize选项与参数1一起使用。

使用此改革后的查询:

mongoimport -d blog -c posts < posts.json --batchSize 1

希望这会奏效。

答案 1 :(得分:0)

尝试使用-j或--numInsertionWorkers标志。某些版本存在一些问题,并且过去创建了故障单。 https://jira.mongodb.org/plugins/servlet/mobile#issue/TOOLS-939

/*demo*/
div {
  display:flex;
  align-items:center;
  justify-content:center;/* center content not text */
  text-align:center; 
  }

答案 2 :(得分:0)

尝试以下格式

mongoimport posts.json -d blog -c posts --drop --jsonArray

答案 3 :(得分:0)

要将json文件导入您当前正在使用的mongoDB batabase,请按照以下步骤操作。

  1. 转到您的the link,然后选择当前使用的群集。
  2. 点击收藏,然后转到命令行工具
  3. 您可以在那看到数据导入和导出工具,其中提供了将json文件导入到数据库的命令。
  4. 按照命令中的指示替换标签。

如果出现任何错误,例如:

Failed: cannot decode array into a D

然后在命令的最后添加--jsonArray。 示例:

mongoimport --host <hostname> --ssl --username <username> --password <PASSWORD> --authenticationDatabase admin --db <DATABASE> --collection <COLLECTION> --file <FILENAME> --jsonArray