Chèn tệp json vào mongodb


81

Tôi mới sử dụng MongoDB. Sau khi cài đặt MongoDB trong Windows, tôi đang cố gắng chèn một tệp json đơn giản bằng lệnh sau:

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

Tôi nhận được lỗi sau:

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

Tôi cần làm gì để nhập tệp json mới vào mongodb?


2
Yêu cầu của mongoimport là mỗi tài liệu phải nằm trên một dòng mới.
Samuel O'Malley

2
Bạn nên chấp nhận (đánh dấu) câu trả lời giải quyết vấn đề của bạn.
Sumit Kamboj

Câu trả lời:


108

Sử dụng

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

Nó có lẽ đang lộn xộn vì các ký tự dòng mới.


Lệnh này phải được chạy từ thư mục có 'mongoimport.exe'. Tệp JSON cũng phải có trong thư mục đó.
Samdish Arora

lệnh sẽ được chạy bên trong thư mục data / db, trừ khi bạn gặp lỗi.
Zeinab

55

Lệnh dưới đây phù hợp với tôi

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

khi tôi xóa ký tự dòng mới bổ sung trước Emailthuộc tính trong mỗi tài liệu.

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

36

Điều này đã làm việc cho tôi - (từ Mongo shell)

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

Thật tuyệt. Để sử dụng mongo shell làm trình thông dịch cho hệ điều hành và sử dụng các lệnh "bash" làm hàm. Tôi thậm chí không biết rằng mongo có thể truy cập cây tệp như thế này. Cảm ơn!
Rea Haas

15

Sử dụng lệnh dưới đây khi nhập tệp JSON

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

3

hai cách sau hoạt động tốt:

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

nếu bộ sưu tập thuộc về một người dùng cụ thể, bạn có thể sử dụng -u -p --authenticationDatabase



1

Giải pháp này có thể áp dụng cho máy Windows.

  1. MongoDB cần thư mục dữ liệu để lưu trữ dữ liệu. Đường dẫn mặc định là C:\data\db. Trong trường hợp bạn không có thư mục dữ liệu, hãy tạo một thư mục trong ổ C: của bạn. (PS: data \ db có nghĩa là có một thư mục tên là 'db' bên trong thư mục 'data')

  2. Đặt json bạn muốn nhập vào con đường này: C:\data\db\.

  3. Mở dấu nhắc lệnh và nhập lệnh sau

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

Đây,

  • databaseName: tên cơ sở dữ liệu của bạn
  • collectionName: tên bộ sưu tập của bạn
  • fileName: tên tệp json của bạn nằm trong đường dẫn C: \ data \ db
  • batchSize có thể là bất kỳ số nguyên nào theo ý muốn của bạn

1
Đã giúp tôi một đống! Cảm ơn
filipbarak

0

Trong MS Windows, lệnh mongoimport phải được chạy trong dấu nhắc lệnh bình thường của Windows, không phải từ dấu nhắc lệnh mongodb.


tương tự cho Unix. mongoimport phải được chạy từ một thiết bị đầu cuối bình thường như mongod.
Doel,


0

Trong MongoDB Để chèn dữ liệu mảng Json từ tệp (từ vị trí cụ thể từ hệ thống / máy tính) bằng lệnh mongo shell. Trong khi thực hiện lệnh dưới đây, lệnh phải ở một dòng.

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

Tệp JSON: card_type_authorization.json

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

0

Mở dấu nhắc lệnh riêng và kiểm tra:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.