TinyDSメモ(Query編)
Query
クエリ用クラス
内部で使っているので、appengine-apiに含まれるDatastore::Query辺りを合わせて読むと幸せになれそう
使い方
Person.query.sort(:user_name, :desc).filter(:user_name, '==', 'hoge').one
基本的に設定メソッドはselfを返すのでメソッドチェインが可能
メソッド
メソッド | 説明 |
---|---|
initialize(model_class) | コンストラクタ Base.queryで取得するので基本使わない。 |
ancestor(anc) | 祖先を指定する。 anc:祖先。Base, String, Keyを指定可能。 |
filter(*args) | フィルタを設定する。 argsはHashまたはパラメータ名, 演算子, 値の3組のどちらかを指定する。 Hashを指定した場合はname=>パラメータ名, value=>値のペアで「==」フィルタになる。 3組の場合に指定できる演算子は以下のとおり
|
sort(name, dir=:asc) | ソートを指定する。 name:プロパティ名 dir:ソートの方向 :asc(昇順)または:desc(降順)を指定する。 デフォルトは昇順。 |
keys_only | 検索結果としてKeyだけを返すように設定する |
count | 設定されている条件で取得できるエンティティの数を返す。 |
one | 設定されている条件で1件のエンティティを取得する。 複数ヒットする場合はTooManyResults例外、ヒットしなかった場合nilを返す |
all(opts={}) | 設定されている条件にヒットする全エンティティを取得する。 optsには:limit, :offset, :chunk, :transactionが指定できる。 :limit : クエリが戻す結果の上限 :offset : オフセット(スキップする件数)。スキップした数は:limitに影響しない :chunk : 内部のチャンク方法を指定するらしいがよく分からない。 :transaction : クエリを実行するトランザクション。祖先のクエリ(ancestor queries)のみサポートしている。 指定しない場合、現在のトランザクション(current transaction)を使用する。 |
each(opts={}) | 設定されている条件でヒットするエンティティにブロックで渡された処理を行う。 optの値はallと同じ |
collect(opts={}) | 設定されている条件でヒットするエンティティにブロックで渡された処理を行い、その結果を返す。 optの値はallと同じ |
keys(opts={}) | 指定された条件でヒットするエンティティのKeyを返す。 optの値はallと同じ |
0 件のコメント:
コメントを投稿