mongoimport를 사용하여 파일에서 mongodb로 json 가져오기
json_file.json은 다음과 같습니다.
[
{
"project": "project_1",
"coord1": 2,
"coord2": 10,
"status": "yes",
"priority": 7
},
{
"project": "project_2",
"coord1": 2,
"coord2": 10,
"status": "yes",
"priority": 7
},
{
"project": "project_3",
"coord1": 2,
"coord2": 10,
"status": "yes",
"priority": 7
}
]
다음 명령을 실행하여 mongodb로 Import하면
mongoimport --db my_db --collection my_collection --file json_file.json
다음의 에러가 표시됩니다.
Failed: error unmarshaling bytes on document #0: JSON decoder out of sync - data changing underfoot?
Import하는 명령어에 --jsonArray 플래그를 추가하면 다음과 같이 됩니다.
imported 3 documents
원본 파일에 표시된 것과 같이 json 형식의 문서를 하나 대신합니다.
위의 파일 원본 포맷으로 mongodb에 json을 Import하려면 어떻게 해야 하나요?
그mongoimport
도구에는 다음과 같은 옵션이 있습니다.
--jsonArray
입력 소스를 JSON 어레이로 취급하다
또는 다음과 같은 데이터 형식을 포함하는 파일에서 가져올 수 있습니다.db.collection.find()
명령어를 입력합니다.다음은 university.mongodb.com 코스웨어의 몇 가지 콘텐츠 예시입니다.grades.json
:
{ "_id" : { "$oid" : "50906d7fa3c412bb040eb577" }, "student_id" : 0, "type" : "exam", "score" : 54.6535436362647 }
{ "_id" : { "$oid" : "50906d7fa3c412bb040eb578" }, "student_id" : 0, "type" : "quiz", "score" : 31.95004496742112 }
{ "_id" : { "$oid" : "50906d7fa3c412bb040eb579" }, "student_id" : 0, "type" : "homework", "score" : 14.8504576811645 }
보시다시피 배열을 사용하지 않고 문서 간에 쉼표 구분 기호를 사용하지 않습니다.
최근에 이것이 형식을 준수한다는 것을 알게 되었습니다.
에 사용된 것처럼apache.spark.sql.DataFrameReader.json()
방법.
사이드 노트:$ python -m json.tool --sort-keys --json-lines < data.jsonl
또한 이 형식을 처리할 수 있습니다. 데모 및 자세한 내용은 여기를 참조하십시오.
MongoDB 프로젝트 블로그에서 다음 자료를 참조하면 Mongo에서 어레이가 어떻게 동작하는지 알 수 있습니다.
https://blog.mlab.com/2013/04/thinking-about-arrays-in-mongodb/
그렇지 않으면 다음 중 하나를 가져올 수 있습니다.
a) --jsonArray 플래그를 사용하여 3개의 다른 개체를 컬렉션으로 개별적으로 Import합니다.
b) 예를 들어 다음과 같이 전체 어레이를 단일 객체 내에 캡슐화합니다.
{
"mydata":
[
{
"project": "project_1",
...
"priority": 7
}
]
}
HTH
오늘 저는 정반대의 문제에 직면했습니다.결론은 다음과 같습니다.
각 어레이 엔트리가 개별 dtabase 엔트리로 취급되는 JSON 오브젝트의 배열을 한 번에 삽입하는 경우 다음 두 가지 구문 옵션을 사용할 수 있습니다.
유효한 혼수 위치 & --jsonArray 플래그가 있는 객체 배열 필수
[ {obj1}, {obj2}, {obj3} ]
기본적으로 잘못된 JSON 형식을 가진 파일 사용(예: 누락)
,
--jsonArray 플래그 없음 및 JSON 객체 인스턴스 간{obj1} {obj2} {obj3}
어레이만 삽입하는 경우(즉, 데이터베이스의 최상위 시티즌으로 어레이)mongoDB는 정의상 문서를 JSON 오브젝트에 매핑하는 최상위 오브젝트로 지원하기 때문에 불가능하고 유효하지 않다고 생각합니다.즉, Alan WARD가 지적한 것처럼 어레이를 JSON 오브젝트로 정리해야 합니다.
오류:
$ ./mongoimport --db bookings --collection user --file user.json
2021-06-12T18:52:13.256+0530 connected to: localhost
2021-06-12T18:52:13.261+0530 Failed: error unmarshaling bytes on document #0: JSON decoder out of sync - data changing underfoot?
2021-06-12T18:52:13.261+0530 imported 0 documents
솔루션:JSON 데이터에 객체 배열이 포함되어 있는 경우 아래 명령어를 사용하여 Import하는 동안 --jsonArray를 사용해야 합니다.
$ ./mongoimport --db bookings --collection user --file user.json --jsonArray
2021-06-12T18:53:44.164+0530 connected to: localhost
2021-06-12T18:53:44.532+0530 imported 414 documents
언급URL : https://stackoverflow.com/questions/30380751/importing-json-from-file-into-mongodb-using-mongoimport
'programing' 카테고리의 다른 글
순서 없이 동일한 속성을 가진 두 JSON을 비교하려면 어떻게 해야 합니까? (0) | 2023.03.08 |
---|---|
도커의 Word press: 마운트된 볼륨에 디렉터리를 만들 수 없습니다. (0) | 2023.03.08 |
JSON을 검증하기 위한 정규식 (0) | 2023.03.08 |
기능 구성요소의 기능은 어디로 이동해야 합니까? (0) | 2023.03.08 |
AngualrJ: html 갱신 시 데이터 유지 (0) | 2023.03.08 |