如何将在Python中创建的布尔值传递给MongoDB?

时间:2015-05-17 11:27:30

标签: python mongodb

使用Python 3.4我正在解析从MongoDB(3.0.2)读取的文档 - 我执行各种测试并生成以下表格的JSON / BSON:

{  
     'FixedH': False,
     'Mstereo': True,
     'RecMet': False,
     'Sstereo': True,
     'bond': False,
     'charge': False,
     'isotope': False,
     'length': 223,
     'nocomponents': 1,
     'nolayers': 6,
     'stereo': True
}

如果我尝试将其写回MongoDB(从shell),我会收到以下错误:

  

ReferenceError:未定义False       at(shell):1:175

如果我手动转换我的布尔值(False - > false),使它们全部小写,则错误消失,文档将写入MongoDB中的集合。

我猜我不是第一个遇到这个问题的人,但我找不到任何公布的解决方法。如何解决此案例敏感度不匹配?

2 个答案:

答案 0 :(得分:3)

您是否从mongo shell插入文件? Mongo shell不会接受'False'或者' True'作为布尔值。您应该使用Python Mongo驱动程序客户端。 Pymongo应该工作。检查以下示例:

import pymongo
client = pymongo.MongoClient('localhost', 27017)
db = client.testdatabase
col = db.testcollection
col.insert({'FixedH': False,'Mstereo': True,'RecMet': False,'Sstereo': True,'bond': False,
            'charge': False, 'isotope': False,'length': 223,'nocomponents': 1,
            'nolayers': 6,'stereo': True})
cursor = col.find()
print 'Found', cursor.count()
print cursor.next()
client.close()

答案 1 :(得分:0)

调用json_str = json.dumps(YOUR_OBJECT),然后将其从shell

插入MongoDB