Mongodb bson.errors.InvalidDocument但类型看起来正确

Mongodb bson.errors.InvalidDocument但类型看起来正确,mongodb,ubuntu,amazon-ec2,pymongo,python-3.4,Mongodb,Ubuntu,Amazon Ec2,Pymongo,Python 3.4,根据以前关于这个主题的文章,如果字典设置不正确,或者使用了PyMongo无法转换的数据类型,我已经扩展了日志记录,以便在出现错误的地方查找整个字典。以下是相关地点的完整输出: 2015-03-19 02:03:32,255 ERROR quoteserver.updateeq : Exception inserting into 'quotes': {'Quote_Time': datetime.datetime(2015, 3, 19, 16, 0), '_id': ObjectId('55

根据以前关于这个主题的文章,如果字典设置不正确,或者使用了PyMongo无法转换的数据类型,我已经扩展了日志记录,以便在出现错误的地方查找整个字典。以下是相关地点的完整输出:

2015-03-19 02:03:32,255 ERROR quoteserver.updateeq :  Exception inserting into 'quotes': {'Quote_Time': datetime.datetime(2015, 3, 19, 16, 0), '_id': ObjectId('550a2e7480eb420629c2101a'), 'Vol': 1, 'Expiry': datetime.datetime(2016, 1, 15, 0, 0), 'Bid': 11.25, 'Strike': 13.0, 'Opt_Symbol': 'GE160115C00013000', 'Ask': 12.9, 'Underlying': 'GE', 'Opt_Type': 'call', 'Last': 12.75, 'Open_Int': 51}
Traceback (most recent call last):
  File "quoteserver.py", line 93, in updateeq
    _insertion_result = _quotes.insert_one(_entry)
  File "/usr/local/lib/python3.4/dist-packages/pymongo/collection.py", line 447, in insert_one
    return InsertOneResult(self._insert(document),
  File "/usr/local/lib/python3.4/dist-packages/pymongo/collection.py", line 411, in _insert
    gen(), check_keys, self.codec_options, client)
bson.errors.InvalidDocument: Cannot encode object: 1
特别奇怪的是,完全相同的代码在我的Mac上运行,但在运行Ubuntu14的EC2实例上却没有。字符串或其他东西是否可以以一种奇怪的方式进行编码,而这种方式在打印字典时不会出现?还是我只是瞎了眼,错过了更明显的东西


这里还有一个链接,指向中停止工作的行。我正在运行Mongo 3.0.1和pymongo 3.0b0。

远程实例运行的MongoDB服务器版本是什么?Monodb2.4.x?还有什么pymongo版本?鉴于您使用的是.insert_one,这似乎是最近的一个。我想知道这是否与Python3中字符串和字节流之间的差异有关。对dict中的每个字符串进行编码是一种痛苦,但对我来说,错误消息听起来像是一种问题。我注意到pymongo最近才添加了对Python3的支持。这里可能的情况是MongoDB 2.4不理解用于方法的协议。这就是新形成的方法。在引擎盖下插入一个。编码不应该是一个问题,因为如果驱动程序中没有确定数据是字符串或任何其他严格类型,那么它将作为二进制文件提交。MongoDB对此并不在意。但确实,它是一个测试版驱动程序实现,因此可能会有一些问题。使用风险自负。您是否建议备份到pymongo和/或MongoDB和/或Python 2的早期版本而不是3?更确切地说:每一个的最新版本中有什么是合理稳定的?目前稳定的版本仍然是2.8。目前有一点问题导致人们使用3.0.x文档,由此产生的问题如前所述