Вставте файл JSON в mongodb


82

Я новачок у MongoDB. Після встановлення MongoDB в Windows я намагаюся вставити простий файл json, використовуючи таку команду:

C:\>mongodb\bin\mongoimport --db test --collection docs < example2.json

Я отримую таку помилку:

connected to: 127.0.0.1
Fri Oct 18 09:05:43.749 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:43
Fri Oct 18 09:05:43.750
Fri Oct 18 09:05:43.750 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:42
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:44
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 check 0 0
Fri Oct 18 09:05:43.752 imported 0 objects
Fri Oct 18 09:05:43.752 ERROR: encountered 6 error(s)s

example2.json

{"FirstName": "Bruce", "LastName": "Wayne", 
"Email": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", 
"Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", 
"Email": "dgrayson@Wayneenterprises.com"}

Що мені потрібно зробити, щоб імпортувати новий json-файл у mongodb?


2
Монгоімпорт вимагає, щоб кожен документ був у новому рядку.
Самуель О'Меллі,

2
Ви повинні прийняти (галочку) відповідь, яка вирішить вашу проблему.
Суміт Камбой

Відповіді:


112

Використовуйте

mongoimport --jsonArray --db test --collection docs --file example2.json

Це, можливо, псується через символи нового рядка.


Цю команду слід запускати з каталогу, де присутній 'mongoimport.exe'. Файл JSON також повинен бути присутнім у цьому каталозі.
Самдіш Арора,

команда повинна виконуватися всередині папки data / db, якщо ви не отримаєте помилку.
Zeinab

56

Нижче команда працювала для мене

mongoimport --db test --collection docs --file example2.json

коли я видаляв зайвий символ нового рядка перед Emailатрибутом у кожному з документів.

example2.json

{"FirstName": "Bruce", "LastName": "Wayne", "Email": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", "Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", "Email": "dgrayson@Wayneenterprises.com"}

37

Це спрацювало для мене - (з монго-оболонки)

var file = cat('./new.json');     # file name
use testdb                        # db name
var o = JSON.parse(file);         # convert string to JSON
db.forms.insert(o)                # collection name

Це круто. Використовувати оболонку mongo як інтерпретатор для ОС та використовувати команди "bash" як функції. Я навіть не знав, що mongo може отримати доступ до дерева файлів таким чином. Дякую!
Rea Haas

16

Використовуйте команду нижче під час імпортування файлу JSON

C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json

4

наступні два способи добре працюють:

C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json
C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs < example2.json

якщо колекції належать певному користувачеві, ви можете використовувати -u -p --authenticationDatabase



1

Це рішення застосовується для машини з ОС Windows.

  1. MongoDB потрібен каталог даних для зберігання даних. Шлях за замовчуванням - C:\data\db. Якщо у вас немає каталогу даних, створіть його на своєму диску C:. (PS: data \ db означає, що всередині каталогу "data" є каталог з ім'ям "db")

  2. Помістіть JSON , який ви хочете імпортувати в цьому напрямку: C:\data\db\.

  3. Відкрийте командний рядок і введіть таку команду

    mongoimport --db databaseName --collections collectionName --file fileName.json --type json --batchSize 1

Ось,

  • databaseName: ваше ім'я бази даних
  • collectionName: назва вашої колекції
  • fileName: ім'я вашого файлу json, який знаходиться у шляху C: \ data \ db
  • batchSize може бути будь-яким цілим числом відповідно до вашого бажання

1
Допоміг мені купу! Дякую
filipbarak

0

У MS Windows команду mongoimport потрібно запускати в звичайному командному рядку Windows, а не з командного рядка mongodb.


те саме для Unix. mongoimport повинен запускатися з звичайного терміналу як mongod.
Doel


0

У MongoDB Вставити дані масиву Json з файлу (з певного місця з системи / ПК) за допомогою команди оболонки mongo. Під час виконання команди нижче команда повинна бути в одному рядку.

var file = cat ('I: /data/db/card_type_authorization.json'); var o = JSON.parse (файл); db.CARD_TYPE_AUTHORIZATION.insert (o);

Файл JSON: card_type_authorization.json

[{
"code": "visa",
"position": 1,
"description": "Visa",
"isVertualCard": false,
"comments": ""
},{
    "code": "mastercard",
    "position": 2,
    "description": "Mastercard",
    "isVertualCard": false,
    "comments": ""
}]

0

Відкрийте командний рядок окремо і перевірте:

C: \ mongodb \ bin \ mongoimport --db db_name --collection_name_name <filename.json

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.