2017-02-22 112 views
0

我一直在機器上使用pymongo 3.3.0mongo 3.2.10一段時間。最近,我注意到我的一些記錄是用BinData類型插入的,而不是字符串,這正是我期望的。pymongo將哪些對象類型作爲BinData插入到mongodb中?

我現在有看起來像這樣的記錄:

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

雖然我本來期望是這樣的:

{'some_key': 'some_value'} 

我注意到,如果我解碼S0me=Bas3=64=Enc0Ding,我得到的預期值, some_value

但是,我仍然對這種情況發生的原因感到困惑。

我檢查了我的代碼,看來我插入了字符串。此外,該錯誤並不普遍。我仍然有正確插入的新記錄。只有其中一些插入爲BinData。

您是否知道可能導致此問題的任何疑難問題,或者有什麼 建議要檢查哪些問題是潛在的問題來源?

實現quetion可能過於寬泛,我將它縮小這樣的:

通過pymongo插入的MongoDB什麼對象類型爲BinData?

謝謝!

編輯

我使用的Python版本是3.5。雖然具體版本並不重要,但我使用python 3的事實確實如此。

回答

0

我發現了這個錯誤。

我的方法之一是返回一個字節字符串,而不是一個字符串。

舉例來說,如果你有這樣的:

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

您將在蒙戈結束:

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

我懷疑這是與事實stringbytes不再basestring的子類。

相關問題