pymodm找不到对象,而pymongo成功找到它

时间:2019-01-17 15:20:57

标签: python-3.x pymongo pymodm

我在从<canvas id="one" width="300" height="300"></canvas>实例获取对象时遇到问题。如果我使用mongodb接口搜索此对象,一切都很好-可以找到对象。如果尝试使用pymongo做同样的事情-它将失败并显示错误。

这是我在做什么:

pymodm

第一张打印输出:from pymodm import connect, MongoModel, fields from pymongo import MongoClient class detection_object(MongoModel): legacy_id = fields.IntegerField() client = MongoClient(MONGODB_URI) db = client[MONGODB_DEFAULT_SCHEME] collection = db['detection_object'] do = collection.find_one({'legacy_id': 1437424}) print(do) connect(MONGODB_URI) do = detection_object.objects.raw({'legacy_id': 1437424}).first() print(do) 。但是,在执行以下命令期间:{'_id': ObjectId('5c4099dcffa4fb11494d983d'), 'legacy_id': 1437424}解释器因以下错误而失败:

do = detection_object.objects.raw({'legacy_id': 1437424}).first()

怎么可能?我试图查询具有相同连接和集合的相同对象。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

detection_object.objects.raw({'legacy_id': "1437424"} ).first()

legacy_id可能存储为字符串。

否则,请确保数据库名称出现在docs中带下划线的MONGO_URI的末尾。

答案 1 :(得分:0)

“ detection_object”集合中的每个文档都必须具有“ _cls”属性。存储在此属性中的字符串值应为

    __main__.classname

(根据您的代码,类名是detection_object)。

例如,您数据库中的文档需要如下所示:

    {'_id': ObjectId('5c4099dcffa4fb11494d983d'), 'legacy_id': 1437424, '_cls': '__ main __.detection_object'}