sql >> データベース >  >> NoSQL >> MongoDB

整数フィールドでのRailsMongoid正規表現

    リンクされた質問からのMongoDBソリューションは次のようになります:

    db.models.find({ $where: '/^124/.test(this.number)' })
    

    findに渡すもの ほぼ1対1でMongoidにマップします:

    where(:$where => "/^#{numero.to_i}/.test(this.number)")
    

    to_i この限られたケースでは、呼び出しによって文字列補間が正常に行われるはずです。

    これはデータベースに対して行うのはかなり恐ろしいことであることに注意してください。インデックスを使用することはできず、コレクション内のすべてのドキュメントをスキャンします...

    通常の正規表現マッチングを実行できるように、文字列フィールドを使用する方がよい場合があります。正規表現を最初に固定すれば、MongoDBでインデックスを使用できると確信しています。データベース内の数値にする必要がある場合は、いつでも整数フィールドと文字列フィールドの両方として格納できます。

    field :number,   :type => Integer
    field :number_s, :type => String
    

    次に、:number_sを保持するためのフックがいくつかあります :numberとして最新 変更します。これを行った場合、パターンマッチングスコープは:number_sを参照します。 。このようなデータの事前計算と複製はMongoDBでかなり一般的であるため、気にしないでください。



    1. 他の値と一緒に参照を更新するマングース

    2. カスタム_idフィールドDjangoMongoDBMongoEngine

    3. MongoDBドキュメント操作はアトミックで分離されていますが、一貫性がありますか?

    4. Pythonフラスコ動的パラメータをデコレータに渡す方法