0

Ming ODM でマッピングを設定中です。発生した 1 つの問題は、カスタム タイプをフィールドにマップする方法と、そのカスタム タイプをフィールドに渡す方法です。.query

基本的に、顧客 ID を表すオブジェクトがあります。FieldProperty が、組み込み型ではなく、この型のオブジェクトを取得して返すようにしたいと考えています。型は int との間で変換可能で、Mongo では int として格納されますが、データ モデルやその他の Python コードでは、このドメイン固有の型として渡したいと考えています。

CustomerID 型のインスタンスを kwd 引数として に直接渡すと.query、PyMongo は型を理解できないと文句を言います。

4

1 に答える 1

2

私は最近、似たようなことをしたいと思っていました。Ming を介して MongoDB に IP アドレスをバイナリ データとして保存します。(これの理由は、効率的な CIDR クエリを許可することでした。) @kbuck を助けるには遅すぎるかもしれませんが、同じことをしようとしているときにたまたまこの質問に出くわした他の人に私の解決策を提供しています。

私は自分の IP アドレス クラスをサブクラスにするトリックを使ってこれを機能させましたbson.Binary(私は Python 2 を使用しています。Python 3 の場合は、組み込みbinary型のサブクラスが代わりに使用されます)。

CustomerIDクラスを のサブクラスにしますint。このクラスには、 (データベースからロードする場合の)インスタンス (コピー コンストラクター)、およびアプリケーションが使用する必要のあるコンストラクター (私の例では IP アドレス プレゼンテーション文字列)CustomerIDを受け入れるポリモーフィック コンストラクターが必要です。intCustomerID

これは、あなたが要求したものとはまったく異なります。FieldProperty はまたはあなたのタイプを取り、あなたのタイプに変換する方法を知っているintスペシャルを返します。int

(IP アドレスの) 完全な例を Gist としてアップロードしました: https://gist.github.com/3854792

于 2012-10-08T20:35:20.253 に答える