Python 앱에서 MongoDB를 사용하는 경우 불러온 커서 객체를 리스트 타입(배열)으로 변경하는 방법을 알아봅니다.


! MongoDB 커서 리스트로 바꾸기
먼저 리스트 타입으로 변경하는 이유는 무엇일까요? MongoDB의 레코드를 find() 등을 사용하여 여러 개로 불러오면 커서 객체가 반환됩니다. 그런데 이 값을 파이썬에서 변경하거나 json 등의 형태로 반환하기 위해서 리스트로 타입 변경을 하게 됩니다.

이제 커서 객체를 리스트로 변경해보겠습니다. 이 경우 아래와 같이 두 가지 방법을 사용할 수 있습니다.


@ list() 함수 사용하기

먼저 list() 함수를 사용하는 방법입니다. db.myCollection.find()로 원하는 데이터를 반환한 경우 list()를 사용하여 타입을 변경합니다.
results = list(db.myCollection.find())

이제 results는 리스트 타입으로 저장되었습니다.


@ for 문과 append()를 사용하기
다음으로 for문을 MongoDB 커서에 사용한 후 append() 하는 방법입니다. 빈 배열을 하나 만들고 각각의 커서를 append()를 사용하여 추가합니다.
results = db.myCollection.find()

## 빈 배열 선언
list_results = []

## for 문을 사용하여 추가하기
for result in results:
  result['name'] = 'Name-' + result['name']
  json_results.append(result)

위 예제는 빈 배열을 만들고 for()문을 사용하여 모든 커서 객체를 리스트에 추가한 방법입니다. 이 때 for문을 사용해 커서의 내용을 변경하는 것이 역시 가능합니다.

이 방법이 위의 방법 list()와의 차이점은 무엇일까요? for 문을 사용하면 리스트 타입으로 변경하는 것 외에 값을 변경하거나 삭제, 추가 등의 작업을 할 수 있습니다.


! 정리하기
여기까지 커서 객체를 리스트로 변경하는 방법에 대하여 알아봤습니다. 커서를 그대로 반환하는 경우 웹의 템플릿에서 사용할 수 없으므로 일반적으로 리스트로 변환 후 리턴하거나 json으로 반환하기 위해 dump() 함수를 수행 후 json의 load() 함수 등을 사용하기도 합니다.