Where 節

map 機能、reduce 機能の where 節は同じ仕様で、他のクエリシステム同様に入力値をフィルタします。

map および reduce の where 定義は同じ結果を生成するわけではなく、すべてのパラメータが有効であるわけでもありません。

Where 節の例

{
  "version": "1.7.0",
  "event": {
      "game": {
          "maps": [
              {
                  "id": "changeColor",
                  "source": "userinput",
                  "where": {"key": ["changeColor", "<name>"], "name": "<color>", "type": "string"},
                  "key": ["changeColor", "<name>", "<color>"], "value": 1
              },
              {
                  "id": "cheer",
                  "source": "userinput",
                  "where": {"key": ["cheer"], "name": "<name>", "type": "string"},
                  "key": ["cheer", "<name>"], "value": 1
              }
          ],
          "reductions": [
              {
                  "id": "changeColor",
                  "where": {"key": ["changeColor", "<name>", "<color>"]},
                  "key": ["<name>", "<color>"],
                  "value": ["$count"],
                  "period": 250
              },
              {
                  "id": "cheer",
                  "where": {"key": ["cheer", "<name>"]},
                  "key": ["<name>"],
                  "value": ["$sum"],
                  "period": 250
              }
          ]
      }
  }
}

Where 節のコンテンツ

一致する key:value ペアの条件を指定します。条件には次のようなものがあります。

キー

文字列の配列。カッコ内に記述する必要があります。コンマ区切りで複数の値を含むこともできます。値が文字列の場合、イベントはこの値と一致する必要があります。値が <> 付きの文字列の場合、任意の値をとります。この値は、あとで <> の間のタグで参照することができます。

{"key": ["changeColor", "<name>", "<color>"]}

名前

値のタグ名。

タイプ

送信する値のタイプ。この値は、 ブール値文字列数字 (数字の場合、 float64 が map および reduce に使用します)。以下のようなフィルタ処理に使用すると便利です。

フィルタ処理

タイプに応じて、以下のオプションで値をフィルタすることもできます。

any type:

  • $or : 値に、 where 節の配列の少なくとも 1 つの where 節が含まれる必要があります。

bool:

  • $eq: 値が指定した値と同一である必要があります。

number:

  • $eq: 値が指定した値と同一である必要があります。
  • $neq: 値が指定した値と同一でない。
  • $gt: 値が指定した値より大きい。
  • $gte: 値が指定した値以上。
  • $lt: 値が指定した値より小さい。
  • $lte: 値が指定した値以下。

string:

  • $caseSensitive : 検索で大文字小文字を区別するように変更します。以下のフィルタ処理と組み合わせて使用することができます。
  • $in : 値が、配列の 1 つの項目と一致する必要があります。
  • $searchIn : 値に、リストの文字列が少なくとも 1 つ含まれる必要があります。
  • $search : 値に検索文字列が含まれる必要があります。
  • $eq: 値が指定した値と同一である必要があります。
  • $neq: 値が指定した値と同一でない。