У меня есть некоторые данные, которые мы преобразовали в json, чтобы их можно было импортировать в mongodb.Загрузка значений даты до 1970 года с использованием mongoimport vs mongo shell
Для некоторых документов нам нужно иметь поле даты, которая лежит до 1970 года Таким образом, мы проверили документы, по существу, как это сделать:
[[email protected] ~]$ echo 'db.datetest.save({"date": new Date(1)});' | mongo nielsbasjes
MongoDB shell version: 2.0.6
connecting to: nielsbasjes
bye
[[email protected] ~]$ echo 'db.datetest.save({"date": new Date(-1)});' | mongo nielsbasjes
MongoDB shell version: 2.0.6
connecting to: nielsbasjes
bye
и два документа, которые были вставлены.
Однако при попытке загрузить одни и те же документы, используя mongoimport мы получаем это:
[[email protected] ~]$ echo '{"date": new Date(1)}' | mongoimport -vv -d nielsbasjes -c datetest
Thu Jun 21 17:43:19 creating new connection to:127.0.0.1
Thu Jun 21 17:43:19 BackgroundJob starting: ConnectBG
Thu Jun 21 17:43:19 connected connection!
connected to: 127.0.0.1
Thu Jun 21 17:43:19 ns: nielsbasjes.datetest
Thu Jun 21 17:43:19 filesize: 0
Thu Jun 21 17:43:19 got line:{"date": new Date(1)}
Thu Jun 21 17:43:19 got line:
imported 1 objects
До сих пор так хорошо ...
[[email protected] ~]$ echo '{"date": new Date(-1)}' | mongoimport -vv -d nielsbasjes -c datetest
Thu Jun 21 17:43:24 creating new connection to:127.0.0.1
Thu Jun 21 17:43:24 BackgroundJob starting: ConnectBG
Thu Jun 21 17:43:24 connected connection!
connected to: 127.0.0.1
Thu Jun 21 17:43:24 ns: nielsbasjes.datetest
Thu Jun 21 17:43:24 filesize: 0
Thu Jun 21 17:43:24 got line:{"date": new Date(-1)}
Thu Jun 21 17:43:24 Assertion: 10340:Failure parsing JSON string near: "date": ne
0x581a82 0x528610 0xaa3ff3 0xaa5e63 0xa9cccd 0xaa0932 0x3bbb81ecdd 0x4fed69
mongoimport(_ZN5mongo11msgassertedEiPKc+0x112) [0x581a82]
mongoimport(_ZN5mongo8fromjsonEPKcPi+0x3d0) [0x528610]
mongoimport(_ZN6Import8parseRowEPSiRN5mongo7BSONObjERi+0x8b3) [0xaa3ff3]
mongoimport(_ZN6Import3runEv+0x16e3) [0xaa5e63]
mongoimport(_ZN5mongo4Tool4mainEiPPc+0x169d) [0xa9cccd]
mongoimport(main+0x32) [0xaa0932]
/lib64/libc.so.6(__libc_start_main+0xfd) [0x3bbb81ecdd]
mongoimport(__gxx_personality_v0+0x3c9) [0x4fed69]
exception:Failure parsing JSON string near: "date": ne
Thu Jun 21 17:43:24 got line:
imported 0 objects
encountered 1 error
Мы попробовали несколько синтаксиса на ту же дату и мы получаем тот же эффект, со всеми этими формами:
- { "Дата": новая Дата (-2174520376)}
- { "дата": новая Дата (1901,2,3,22,33,44,000)}
- { "дата": новая дата ("3 февраля 1901 22:33:44")
В тестовой системе работает CentOS 64Bit с монго-10gen-2.0.6-mongodb_1.x86_64 и mongo-10gen-server-2.0.6-mongodb_1.x86_64 из репозитория 10gen RPM.
Как это решить? Или это ошибка в mongoimport, о которой следует сообщить?
Почему голос? –