Восстановление коллекции MongoDB из текстового файла документов json - PullRequest
0 голосов
/ 24 сентября 2019

Мне дали текстовый файл, содержащий тысячи документов json (я знаю, что это не идеально).
Мне нужно поместить эти документы в коллекцию mongodb.

Пока что я сохранилтекстовый файл в формате JSON и попытка моноимпорта, добавление запятых между каждым документом и попытка монгорестера с эквивалентом bson - все безуспешно

Вот пример того, что находится в текстовом файле:

{
    "_id" : ObjectId("78ahgodjaodj90231"),
    "date" : ISODate("1970-01-01T00:00:00+0000),
    "comment" : "Hello"
}
{
    "_id" : ObjectId("99151gdsgag5464ah"),
    "date" : ISODate("1970-01-02T00:00:00+0000),
    "comment" : "World"
}

и т. Д. *

Используя mongoimport, я получаю следующее сообщение об ошибке:

  • Failed: invalid JSON input. Position: 16. Character: O

После сохранения в файл BSON, используя mongorestore, я также получаю эту ошибку:

  • Failed: db.collection: error restoring from file.bson: reading bson input: invalid BSONSize: 537534587 bytes

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Мне удалось успешно импортировать документы с помощью функции импорта Studio3T.

После переименования текстового файла в файл JSON и разрешения Studio 3T проверять JSON перед импортом, он работал отлично.

Не лучшее решение, но мне показалось, что оно работает.

0 голосов
/ 24 сентября 2019

Допустим, у нас есть следующие данные в файле:

{
    "_id" : ObjectId("78ahgodjaodj90231"),
    "date" : ISODate("1970-01-01T00:00:00+0000),
    "comment" : "Hello"
}
{
    "_id" : ObjectId("99151gdsgag5464ah"),
    "date" : ISODate("1970-01-02T00:00:00+0000),
    "comment" : "World"
}

Нам нужно реорганизовать его в код, подобный приведенному ниже, и сохранить его с расширением .js, скажем insert_data.js

db.collection.insertMany([
    {
        "_id" : ObjectId("78ahgodjaodj90231"),
        "date" : ISODate("1970-01-01T00:00:00+0000),
        "comment" : "Hello"
    },
    {
        "_id" : ObjectId("99151gdsgag5464ah"),
        "date" : ISODate("1970-01-02T00:00:00+0000),
        "comment" : "World"
    }
])

Наконец выполните следующую команду:

mongo HOST:PORT/DB insert_data.js
...