※ 참고자료 ※
PyMongo 4.8.0 Documentation Reference Link
https://pymongo.readthedocs.io/en/stable/index.html
반갑습니다!
저번 포스트에 MongoDB에 간략하게 살펴보고 insert_one() 함수를 사용했었습니다
저는 Flask를 이용하므로 Python에 해당하는 코드로 진행되겠습니다!
다른 언어에 대한 코드는 공식 문서 및 클러스터 생성시 안내해주니 참고 부탁드립니다~^^!
기본적인 부분은 이전 포스트에서 기술해놨으니 이번 포스트부터는 생략하고,
해당하는 내용만 기술하겠습니다 ^^
저번 시간에는 insert_one() 함수를 이용해서 임의의 컬렉션에 단일 도큐먼트를 삽입했었는데요
이번엔 여러 도큐먼트를 한 번에 삽입하도록 하겠습니다 ^^
insert_one()과 구조는 같습니다
먼저 Client 객체를 생성하고, 내 계정의 어떤 Database의 어떤 Collection인지를 지정해주시면 됩니다
만약 해당하는 DB와 Collection이 없으면 자동으로 생성해서 그 안에 데이터를 삽입합니다 ^^
이번에 준비한 데이터는 여러 딕셔너리를 요소로 갖는 리스트 타입입니다
테스트용 api 리소스를 연결했으니 포스트맨으로 한 번 호출해보겠습니다
Methods는 POST로 설정을 했었고, 별도의 JSON Body는 지정하지 않았었습니다
API를 호출하니 성공적으로 처리되어 success 메세지가 리턴되었습니다 ^^
그럼 데이터베이스에 정상적으로 들어갔는지 한 번 확인해볼까요?
기존에 serverless_move_server_db 데이터베이스 하나 밖에 없었는데요
코드에서 "project-server" 데이터베이스의 "MongoDB_TEST" 컬렉션으로 저장 경로를 지정했더니
자동으로 해당 데이터베이스와 컬렉션이 생성되어 데이터들이 삽입 되었습니다 ^^
보시는 바와 같이 Query Results에 코드 상의 데이터대로
도큐먼트들이 잘 생성된 것을 확인할 수 있겠습니다!
그럼 여기서 궁금한 부분,
정말로 insert_one() 함수로는 여러 도큐먼트를 생성할 수 없을까요?
한 번 실험을 해보겠습니다!
아까와 동일한 코드에서 insert_many()가 아니라 insert_one() 함수를 사용하도록 하겠습니다
코드만 살짝 바꾼 다음 다시 해당 API를 호출해보니
Internal Server Error 메세지가 출력되는 것을 확인할 수 있겠습니다
그럼 정확히 뭐가 문제인지 로그를 또 한 번 봐야겠죠?
TypeError를 토해내며 장렬히 사망하였는데요
에러 메시지에 따르면 insert_one() 메서드에 전달된
test_documents 객체가 올바른 타입이 아니기 때문이라고 합니다!
insert_one() 메서드는 단일 문서를 삽입할 때 사용하는데,
해당 문서는 반드시 dict, bson.son.SON, bson.raw_bson.RawBSONDocument,
또는 collections.MutableMapping을 상속받는 타입이어야 한다고 하네요
코드 자체에 문제가 있어 에러가 발생했으므로,
데이터베이스에는 해당 작업에 대한 결과물이 반영되지 않았습니다
아까 insert_many() 함수를 사용하여 정상적으로 생성된 도큐먼트만 있는 것을 확인할 수 있겠습니다 ^^
가장 기본적은 CRUD 중 Create의 insert_one()과 insert_many()를 살펴보았습니다
다음 포스트에는 해당 콜렉션에 생성된
데이터들을 조회하는 것에 대해서 알아보도록 하겠습니다
읽어주셔서 감사드리며, 개발의 세계에서 항상 건승하시기 바랍니다 ^.^