Wstaw plik json do mongodb


82

Jestem nowy w MongoDB. Po zainstalowaniu MongoDB w systemie Windows próbuję wstawić prosty plik json za pomocą następującego polecenia:

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

Otrzymuję następujący błąd:

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"}

Co muszę zrobić, aby zaimportować nowy plik json do mongodb?


2
Mongoimport wymaga, aby każdy dokument znajdował się w nowej linii.
Samuel O'Malley

2
Powinieneś zaakceptować (zaznaczyć) odpowiedź, która rozwiąże Twój problem.
Sumit Kamboj

Odpowiedzi:


112

Posługiwać się

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

Prawdopodobnie jest to bałagan z powodu znaków nowej linii.


To polecenie należy uruchomić z katalogu, w którym znajduje się plik „mongoimport.exe”. Plik JSON powinien również znajdować się w tym katalogu.
Samdish Arora

polecenie powinno zostać uruchomione w folderze data / db, chyba że pojawi się błąd.
Zeinab

56

Poniższe polecenie zadziałało dla mnie

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

kiedy usunąłem dodatkowy znak nowej linii przed Emailatrybutem w każdym z dokumentów.

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

To zadziałało dla mnie - (z muszli mongo)

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

To super. Aby użyć powłoki mongo jako interpretera dla systemu operacyjnego i używać poleceń "bash" jako funkcji. Nie wiedziałem nawet, że mongo może uzyskać dostęp do drzewa plików w ten sposób. Dzięki!
Rea Haas

16

Użyj poniższego polecenia podczas importowania pliku JSON

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

4

następujące dwa sposoby działają dobrze:

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

jeśli kolekcje należą do określonego użytkownika, możesz użyć -u -p --authenticationDatabase



1

To rozwiązanie dotyczy komputerów z systemem Windows.

  1. MongoDB potrzebuje katalogu danych do przechowywania danych. Domyślna ścieżka to C:\data\db. Jeśli nie masz katalogu danych, utwórz go na dysku C :. (PS: data \ db oznacza, że ​​istnieje katalog o nazwie „db” w katalogu „data”)

  2. Umieścić json chcesz importować w tej ścieżce: C:\data\db\.

  3. Otwórz wiersz polecenia i wpisz następujące polecenie

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

Tutaj,

  • databaseName: nazwa twojej bazy danych
  • nazwa_kolekcji: nazwa Twojej kolekcji
  • fileName: nazwa pliku json, który znajduje się w ścieżce C: \ data \ db
  • batchSize może być dowolną liczbą całkowitą, zgodnie z życzeniem

1
Pomogli mi! Dzięki
filipbarak

0

W MS Windows polecenie mongoimport musi być uruchamiane w normalnym wierszu poleceń systemu Windows, a nie z wiersza polecenia mongodb.


to samo dla Uniksa. mongoimport musi być uruchamiany z normalnego terminala, jak mongod.
Doel


0

W MongoDB Aby wstawić dane tablicy Json z pliku (z określonej lokalizacji z systemu / komputera) za pomocą polecenia powłoki mongo. Podczas wykonywania poniższego polecenia polecenie powinno znajdować się w jednej linii.

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

Plik JSON: card_type_authorization.json

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

0

Otwórz wiersz polecenia oddzielnie i sprawdź:

C: \ mongodb \ bin \ mongoimport --db nazwa_db --collection nazwa_kolekcji <nazwa_pliku.json

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.