Cannot import json file into Mongo

孤街醉人 提交于 2020-06-16 00:35:07

问题


I have a JSON file (from Mongo University) with some JSON in it

However, when I run the import:

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

I get an error and nothing is imported:

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

From the server:

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)

What's going on?

I've tried it with 3.0 and 3.2.


回答1:


According to https://jira.mongodb.org/browse/TOOLS-939, there is a bug which is affecting some versions of mongoimport and mongorestore that causes your mongoimport command to fail.

To sort out this problem, you can use --batchSize option with argument as 1.

Use this reformed query:

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

Hope this will work.




回答2:


Try with -j or --numInsertionWorkers flag. Some version has some issues and ticket was created in past. https://jira.mongodb.org/plugins/servlet/mobile#issue/TOOLS-939

mongoimport -j 4 -d blog -c posts --drop posts.json



回答3:


Try the following format

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



回答4:


To import json file to your currently working mongoDB batabase, please follow the steps given below.

  1. Go to your the link and then select the cluster that your currently working with.
  2. Click on COLLECTIONS and after that go to command line tools.
  3. You can see Data Import and Export Tools over there which provides the command to import your json file to your database.
  4. Replace the tags as instructed in the command.

If you get any error like:

Failed: cannot decode array into a D

Then add --jsonArray at last of the command. Example:

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


来源:https://stackoverflow.com/questions/36657175/cannot-import-json-file-into-mongo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!