0

我正在Ming ODM 中设置映射。出现的一个问题是如何将自定义类型映射到字段,以及如何将该自定义类型传递给.query

基本上,我有一个代表客户 ID 的对象。我希望 FieldProperty 获取并返回这种类型的对象,而不是内置类型之一。该类型可与 int 相互转换,并且它将在 Mongo 中存储为 int,但在数据模型和其他 Python 代码中,我想将它作为这种特定于域的类型传递。

当直接将 CustomerID 类型的实例作为 kwd 参数传递给 时.query,PyMongo 抱怨它不理解该类型。

4

1 回答 1

2

我最近想做类似的事情;通过 Ming 将 IP 地址作为二进制数据存储在 MongoDB 中。(这样做的原因是允许有效的 CIDR 查询。)我正在为在尝试同样的事情时碰巧遇到这个问题的任何其他人提供我的解决方案,即使现在帮助@kbluck 可能为时已晚。

我通过使我的 IP 地址类成为子类的技巧完成了这项工作bson.Binary(我使用的是 Python 2;对于 Python 3,binary将使用内置类型的子类)。

你会让你CustomerID的类成为int. 该类CustomerID需要有一个多态构造函数,它接受一个int(用于从数据库加载时)、一个CustomerID实例(复制构造函数)以及应用程序需要使用的任何构造函数(在我的示例中是一个 IP 地址表示字符串)。

这不是您所要求的;FieldProperty 采用 anint或您的类型,并返回一个int知道如何转换为您的类型的特殊类型。

我已经上传了一个完整的示例(IP 地址)作为要点:https ://gist.github.com/3854792

于 2012-10-08T20:35:20.253 回答