2013-08-25 24 views
15

Tôi mới làm quen với cơ sở dữ liệu mongodb. i tạo một ứng dụng trong đó lưu trữ dữ liệu dưới dạng tệp json. những gì tôi muốn làm là nhập dữ liệu đó vào mongodb và sau đó hiển thị nó trên dấu nhắc lệnh. tôi đã cố gắng lệnh sau nhưng lỗi được hiển thị Failure parsing josn near: } lệnh của tôi là:cách nhập tệp json trong mongodb?

mongoimport -d mydb -c mydb --type json --file glossary.json --headerline

tôi đặt tệp json trong c: \ MongoDB \ bin \ glossary.json thanx i advace.

{ 
"glossary": { 
    "title": "example glossary", 
    "GlossDiv": { 
     "title": "S", 
     "GlossList": { 
      "GlossEntry": { 
       "ID": "SGML", 
       "SortAs": "SGML", 
       "GlossTerm": "Standard Generalized Markup Language", 
       "Acronym": "SGML", 
       "Abbrev": "ISO 8879:1986", 
       "GlossDef": { 
        "para": "A meta-markup language, used to create markup languages such as DocBook.", 
        "GlossSeeAlso": ["GML", "XML"] 
       }, 
       "GlossSee": "markup" 
      } 
     } 
    } 
} 
} 

Trả lời

20

JSON của bạn dường như chỉ có một đối tượng duy nhất. Định dạng như {..},{..} được mong đợi.

Vì vậy, sử dụng --jsonArray tùy chọn:

mongoimport -d mydb -c mycollection --jsonArray < glossary.json 

Các tùy chọn khác là để định dạng tài liệu nguồn như MongoDB hy vọng nó được. Điều này sẽ làm cho tải nhanh hơn nhiều.

+0

thanx S.D. nhưng vẫn hiển thị cùng một lỗi – arglee

+0

@ user2511142 Tôi đã sử dụng tùy chọn '--jsonArray', nó hoạt động cho tệp của bạn. Đã cập nhật trong câu trả lời. –

+0

thanx @ S.D. nó đang hoạt động .. – arglee

3

Nếu bạn có một bộ sưu tập lớn, --jsonArray sẽ tốn rất nhiều thời gian để nhập. Tôi đã nhận được khoảng 10 tài liệu/giây. Nếu bạn có tệp .json được định dạng đúng, bạn chỉ có thể sử dụng --file thay thế. Tôi nhận được khoảng 6000 tài liệu/giây ngay bây giờ.

Điều tốt tôi đã không giải quyết cho tùy chọn đầu tiên!

Các vấn đề liên quan