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

Python bson.errors.InvalidDocument:无法编码对象:True,python,python-2.7,pymongo,Python,Python 2.7,Pymongo,使用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'] } 回溯

使用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'] 
    }
回溯错误为

    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"
C:\Python27\lib\site packages\pymongo-2.5.1\ux-py2.7-win32.egg\pymongo\collection。
py:357:RuntimeWarning:无法编码-重新加载python模块并尝试ag
艾因。如果您看到此内容而未获得InvalidDocument异常,请参阅htt
p://api.mongodb.org/python/current/faq.html#pymongo与mod wsgi一起工作吗
继续(错误,自我。子类型,安全)
回溯(最近一次呼叫最后一次):
文件“C:\Python27\lib\runpy.py”,第162行,在运行模块中作为主
“\uuuuu main\uuuuuuuuuuuuuuuuuuuuuuuuu”,fname,loader,pkg\u name)
文件“C:\Python27\lib\runpy.py”,第72行,在运行代码中
run_globals中的exec代码
文件“D:\Office\u Drive\RetailReco\contactsnew\rrpython\rcauto.py”,第28行,在
rceval.AutoProcess()
文件“C:\Python27\lib\site packages\rrpython-0.1-py2.7.egg\rrpython\automizati
在自动处理中的第67行“on.py”
self.\u configdb[RCEVALPMTS].save(tempdict)
文件“C:\Python27\lib\site packages\pymongo-2.5.1\ux-py2.7-win32.egg\pymongo\col
“lection.py”,保存中的第266行
返回self.insert(保存、操作、安全、检查键,**kwargs)
文件“C:\Python27\lib\site packages\pymongo-2.5.1\ux-py2.7-win32.egg\pymongo\col
插入部分第357行“选择.py”
继续(错误,自我。子类型,安全)
bson.errors.InvalidDocument:无法编码对象:True
“bson.errors.InvalidDocument:无法编码对象:True”
当我使用true的“true”实例时,它工作得很好,但是它会插入一个字符串值,我想添加布尔值,而不是字符串


当我尝试插入simple
{“name”:True}
时,它工作得很好。这怎么可能?出了什么问题?

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

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)

从堆栈跟踪来看,
tempdict
很可能是值
True
,而不是由于应用程序中其他地方的问题(如rrpython库)而要插入的数据字典.

这个问题对任何作者或投票者来说仍然相关吗?JSON中有
true
,而不是Python中的
true
,pymongo会自动进行这种转换