2017-02-22 5 views
0

나는 한동안 Ubuntu 14.04 기계에서 pymongo 3.3.0mongo 3.2.10으로 작업 해 왔습니다. 최근에 필자는 일부 레코드가 문자열 대신 BinData 형식으로 삽입 된 것을 보았습니다. 이는 예상 한 것입니다. ,pymongo에서 mongodb에 BinData로 삽입 할 수있는 객체 유형은 무엇입니까?

{'some_key': 'some_value'} 

은 내가 S0me=Bas3=64=Enc0Ding를 디코딩하는 경우, 내가 예상 가치를 얻을 것으로 나타났습니다 :

{'some_key': BinData(0,"S0me=Bas3=64=Enc0Ding")} 

나는 이런 식으로 뭔가를 기대했을 것이다 있지만 :

지금과 같이 기록이 some_value.

그러나이 문제가 발생하는 이유는 아직도 혼란 스럽습니다.

코드를 확인한 결과 문자열이 삽입 된 것 같습니다. 또한 버그는 일반적이지 않습니다. 새로운 레코드가 올바르게 삽입되었습니다. 일부만 BinData로 삽입됩니다.

이 문제로 이어질 수있는 문제가 있거나 문제의 잠재적 원인을 확인하기위한 제안 사항이 있습니까?

quetion가 너무 광범위 수 있습니다 실현,이 같은 범위를 좁힐 것

BinData로하여 MongoDB에 pymongo 삽입 무엇 오브젝트 유형

?

고맙습니다!

편집

내가 사용 파이썬 버전은 3.5입니다. 특정 버전은 중요하지 않지만, 사실 파이썬 3을 사용하고 있습니다.

답변

0

나는 버그를 발견했다.

내 방법 중 하나가 문자열 대신 바이트 문자열을 반환했습니다. 예를 들어

, 당신이있는 경우 :

value = b'some_value' 
collection.insert_one({'some_key': value}) 

당신이 몽고에 종료됩니다 :

{'some_key': BinData(0,"S0me=Bas3=64=Enc0Ding")} 

나는이 stringbytes은 더 이상 사실을 함께 할 수있는 뭔가가 의심 서브 클래스는 basestring입니다.