mongodb ObjectId 꺼내기

이건선·2023년 2월 9일
0

해결

목록 보기
5/48

문제점
mongodb에 저장되어있는 특정 쿼리를 사용하기위해 _ id를 꺼내야 하는데 value값이 ObjectId로 감싸져있어서 json방식으로 꺼낼 수 없다.

시도해본것
list(db.user.find({},{ id : False}))일 때 id가 ObjectId를 반환하지 않아서 사용이 가능하지만 id : True로 주는 순간 json규칙을 벗어나서 사용이 불가능해진다. id True 상태로 for문 돌려봤을 때 한줄만 값이 return되고 나머지는 출력되지 않았다.

해결


   user_list = list(db.user.find({}))
    count = len(user_list)
    a = []
    for user in user_list:
        if len(a) < count:
             id = str(user['_id'])
             label = user['label']
             box = user['box']
             comment = user['comment']

             doc = {
                'id': id,
                'label': label,
                'box': box,
                'comment' : comment
             }
             a.append(doc)
    print(a)
    return a

알게된것
구글링 했을때 ObjectId의 사용법에 관해서만 문서가 많이 나와서 스스로 해결하느라 시간이 많이걸렸다. 우선 find로 쿼리 전부를 가져온 다음에 count변수로 쿼리의 갯수를 카운트 한다. a 리스트는 for문으로 반복한 값을 담을 것이다. id는 str으로 변환한 _ id의 값이고 a.append(doc)을 이용해서 if문 반복이 끝날때까지 a 리스트에 값을 채운다. for문의 반복이 끝나면 값을 리턴해준다.

profile
멋지게 기록하자

0개의 댓글