KiiCloud

ひとりKii Cloud Advent Calendar 2014-12-13

More than 3 years have passed since last update.

この記事は、ひとりKii Cloud Advent Calendarの13日目の記事です。


13日目「Queryいろいろ」

8日目でちょっとでてきた、バケツ内の検索。今日はその条件をスニペットで紹介。


全部とってこい

KiiClause.all()を使う。

// SQLだとこんな感じ。WHERE句なし

// SELECT * FROM bucket1
QueryParams params = new QueryParams(KiiClause.all());


指定フィールドの値が指定した値と同じものだけ

KiiClause.equals()を使う。

// SQLだとこんな感じ。

// SELECT * FROM bucket1 WHERE level=1
QueryParams params = new QueryParams(KiiClause.equals("level", 1));


指定フィールドの値が指定した値以上 / 指定した値より大きい

第3引数をtrueにすると=を含む。

// 第3引数をtrueにすると=が付く。

// SQLだとこんな感じ。
// SELECT * FROM bucket1 WHERE score >= 10
QueryParams params = new QueryParams(KiiClause.greaterThan("score", 10, true));

// 第3引数をfalseにすると=は付かない。
// SQLだとこんな感じ。
// SELECT * FROM bucket1 WHERE score > 10
QueryParams params = new QueryParams(KiiClause.greaterThan("score", 10, false));


指定フィールドの値が指定した値以下 / 指定した値より小さい

これも同じく、第3引数をtrueにすると=を含む。

// 第3引数をtrueにすると=が付く。

// SQLだとこんな感じ。
// SELECT * FROM bucket1 WHERE score <= 60
QueryParams params = new QueryParams(KiiClause.lessThan("score", 60, true));

// 第3引数をfalseにすると=は付かない。
// SQLだとこんな感じ。
// SELECT * FROM bucket1 WHERE score < 60
QueryParams params = new QueryParams(KiiClause.lessThan("score", 60, false));


合わせ技

SQLと同じく、AND / ORでより複雑な条件が作れる。


AND

KiiClause.and()を使う。引数は可変長引数なので配列で渡してもOK。3つ以上にすると(A AND B AND C AND D...)のようになる。

// SQLだとこんな感じ。

// SELECT * FROM bucket1 WHERE (gameLevel=1 AND score >= 60)
QueryParams params = new QueryParams(KiiClause.and(
KiiClause.equals("gameLevel", 1),
KiiClause.greaterThan("score", 60, true)
));


OR

KiiClause.or()を使う、ANDの時とまぁ同じ。

// SQLだとこんな感じ。

// SELECT * FROM bucket1 WHERE (gameLevel=1 OR score >= 60)
QueryParams params = new QueryParams(KiiClause.or(
KiiClause.equals("gameLevel", 1),
KiiClause.greaterThan("score", 60, true)
));


IN

ORを大量に繋ぐよりは効率がいいらしい。

// SQLだとこんな感じ。

// SELECT * FROM bucket1 WHERE _id in ("id1111", "id2222")
QueryParams params = new QueryParams(KiiClause.in("_id", "id1111", "id2222"));