bson.errors.InvalidDocument:无法编码对象:True

viv*_*ari 10 python pymongo python-2.7

使用python在Mongo中插入文档时出错.

document = {u'Status': 'Active',
 u'Installation': {u'IsFrugal': True,  u'IsFeatureSet': True,  u'IsEvolving': True, u'IsAffordable': True}, 
  u'AutoList': [u'IsFeatureSet', u'IsAffordable', u'IsFrugal'] 
}
Run Code Online (Sandbox Code Playgroud)

TraceBack错误是

C:\Python27\lib\site-packages\pymongo-2.5.1_-py2.7-win32.egg\pymongo\collection.
py:357: RuntimeWarning: couldn't encode - reloading python modules and trying ag
ain. if you see this without getting an InvalidDocument exception please see htt
p://api.mongodb.org/python/current/faq.html#does-pymongo-work-with-mod-wsgi
  continue_on_error, self.__uuid_subtype), safe)
Traceback (most recent call last):
  File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "D:\Office_Drive\RetailReco\contactsnew\rrpython\rcauto.py", line 28, in
<module>
    rceval.AutoProcess()
  File "C:\Python27\lib\site-packages\rrpython-0.1-py2.7.egg\rrpython\automizati
on.py", line 67, in AutoProcess
    self._configdb[RCEVALPMTS].save(tempdict)
  File "C:\Python27\lib\site-packages\pymongo-2.5.1_-py2.7-win32.egg\pymongo\col
lection.py", line 266, in save
    return self.insert(to_save, manipulate, safe, check_keys, **kwargs)
  File "C:\Python27\lib\site-packages\pymongo-2.5.1_-py2.7-win32.egg\pymongo\col
lection.py", line 357, in insert
    continue_on_error, self.__uuid_subtype), safe)
bson.errors.InvalidDocument: Cannot encode object: True

"bson.errors.InvalidDocument: Cannot encode object: True"
Run Code Online (Sandbox Code Playgroud)

当我使用True的"true"实例时,它运行良好,但它会插入一个字符串值,我想添加布尔值而不是字符串.

当我试图插入简单的{"name":True}时,它的工作得很好,怎么可能呢?如果有人能给出解决方案,那么会出错,最受欢迎.

小智 -4

这只是因为 json 中不存在这样的东西True(或者 bson 是 mongo 中实际使用的格式,但它们密切相关)。'true'您可以将文档编码为 json,然后将其插入到 mongo,而不是手动将其更改为字符串:

import json
document = {u'Status': 'Active',
   u'Installation': {u'IsFrugal': True,  u'IsFeatureSet': True,  u'IsEvolving': True, 
   u'IsAffordable': True}, 
   u'AutoList': [u'IsFeatureSet', u'IsAffordable', u'IsFrugal'] 
}
jsonified_document = json.dumps(document)
Run Code Online (Sandbox Code Playgroud)