몽고디비에서 도큐멘트를 생성할 때 자동적으로 priamry key 인 '_id'를 자동적으로 생성한다.
이걸 고유한 값으로 파이몽고에서 사용해줄려고 했지만,
'_id'값은 ObjectId 객체이기 때문에 파이썬에서 인식도 되지않고, 이 오브젝트 아이디 객체를 클라이언트에게 고대로 보낼 수가 없어 에러가 났다. (Type error.... ㅠ)
이 objectid를 사용하기 위해서는 2가지 방법을 이용할 수 있다
1. Object to str
첫번째 방법은 간단하게, objectid 객체를 string타입으로 변환하여 사용하는 방법이다.
# object to str
post["_id"] = str(post["_id"])
post["count_heart"] = db.likes.count_documents({"post_id": post["_id"], "type": "heart"})
2. objectid 클래스 import 해주기
mongodb shell에서는 objectid를 그냥 호출해서 사용할 수 있지만,
파이썬에는 ObjectId라는 클래스가 내장되어있지 않아, 별도로 import해주어 사용해 주어야한다.
bson이라는 패키지에 있는데, pymongo를 설치할 때 함께 설치된다.
from bson.objectid import ObjectId
from pymongo import MongoClient
mongo = MongoClient("mongodb://localhost:27017")
db = mongo['db_name']
col = db['collection_name']
col.find_one({'_id':ObjectId('5f6d775c29be48f7e50ea68e')})
* 참고 : https://ssamko.tistory.com/38
'DataBase > MongoDB' 카테고리의 다른 글
[MongoDB] Pymongo Array 특정 요소(인덱스) 삭제하기 - $pull array (2) | 2021.10.18 |
---|---|
MongoDB 설치하기 (0) | 2021.10.13 |
[MongoDB] 특정 값 증가 - Update 메소드와 $inc 제한자 ( 조회 수, 좋아요) (0) | 2021.10.09 |
MongoDB - Update 하는 방법 (update_one) (0) | 2021.10.09 |
MongoDB란, - (MongDB 시작하기, Robo3T로 조작하기, 몽고디비 조작 CRUD) (0) | 2021.09.18 |