もっと詳しく
MongoDBフィルター集約はバージョン3.2で導入されました。 配列のサブセットを選択し、基準に基づいて結果を提供するために使用されます。 フィルタ演算子は、指定された基準に一致するエントリの配列を、見つかった順序で返します。 MongoDBでフィルター演算子を使用する場合、引数として入力、as、condを指定する必要があります。 inputとcondは必須パラメーターですが、「as」はオプションです。 MongoDBでfilter演算子を使用する場合は、filterキーワードの前に$記号を使用する必要があります。

Ubuntu 20.04でのフィルタークエリMongoDBの構文?

$ filter演算子は、条件に一致する元の順序の要素のみを含む配列を提供します。 以下に、$filterの構文を示します。

{{ $ filter{{ 入力: <array_field>>、 なので: <ストリング>>、cond: <表現>> } }

  • filter:$ filter演算子は、特定の条件を満たす結果を提供するために使用されます。 MongoDBでは、フィルターオペレーターを使用して、クエリで指定した基準に基づいて結果をフィルター処理しました。
  • input:これは配列解決式です。 レコードをフィルタリングするための入力パラメーターとして配列フィールドを渡すことができました。 フィルタ演算子で入力フィールドパラメータを使用する前に、$記号を使用する必要があります。
  • as:これはオプションのフィルター演算子引数です。 これは、入力配列の要素として使用されたフィールドの名前です。 このパラメーターは、フィルター演算子の文字列型です。 「as」キーワードを使用して、この式は入力配列の各要素にアクセスします。
  • cond:このオプションは、生成された配列からの値を含める場所を決定します。 このパラメーターは、フィルター演算子の式タイプです。 指定されたコレクションの値は、式を使用してフィルタリングされました。 多数の条件演算子を使用して、配列要素からのデータをフィルタリングできます。

Ubuntu 20.04のMongoDBでフィルタークエリがどのように機能するか:

MongoDB $ filter演算子は、クエリで定義した条件に基づいて配列からドキュメントをフィルタリングするために使用されます。 指定された条件に基づいて、配列のサブセットを返します。 要件を満たす配列エントリのみが返されます。 要素は以前と同じ配置で再組み立てされます。

私たちが議論していることを理解するのに役立ついくつかの例を見てみましょう。 記事を読み進めていく中で、mongoシェルの例を試していただきたいと思います。 まず、記事全体で利用するデータベースコレクションを作成します。

ここでは、MongoDBシェルを使用して、データベースのコレクションを「候補」として定義しました。 このコレクションでは、id、name、marksフィールドが定義されています。 insertManyクエリを使用して、7つのドキュメントを同時に挿入しました。

コレクション「candidates」は、上記のクエリのようにfind関数を呼び出しています。 次に、記録されたドキュメントにフィールドとそれに対応する値が表示されます。 「マーク」フィールドでは、配列がいくつかのランダムな値で定義されていることに注意してください。

例1:Ubuntu20.04のMongoDBで$filter演算子を使用する:

$ filter演算子は、次の例の特定のコレクションからフィールド「marks」の配列メンバーをフィルター処理するために使用されます。

「候補者」のコレクションに対して集計クエリを利用しました。 このクエリ内には、ドキュメントをIDでフィルタリングするために使用される$match演算子があります。 idフィールドに$in演算子を割り当てました。 $ in演算子は、idの値が指定された配列の任意の値と等しいドキュメントを検索します。 次に、$ filter演算子に入力引数が渡され、その値「$marks」が設定されます。 フィールド名「marks」を返す「as」パラメータも使用されます。 次に、フィールド「$$marks」で大なり記号演算子を使用するcondパラメーターを指定しました。

上記のクエリに従うと、得られた結果が新しいフィールド名のハイマークとともに図に表示されます。

例2:Ubuntu20.04のMongoDBの空の配列に$filter演算子を使用する:

コレクションドキュメントの1つに空の配列がある場合、次のように、フィルター演算子は空の配列セットを返します。

$ match内で、配列内に「7」を指定したため、コレクションからID「7」を返す$in演算子を持つIDを指定しました。 次に、$ filterクエリは、ID「7」の「marks」フィールド内に値が格納されていないため、空の配列を返すコレクションフィールド「marks」を提供しました。

フィルタ演算子の結果には、ここにドキュメントの空のセットがあります。

例3:Ubuntu20.04のMongoDBで間違ったタイプに$filter演算子を使用する:

配列を持たないフィールドで$filterを使用しようとすると、エラーが発生します。 以下は、このステートメントのデモンストレーションです。

$ filter演算子内で、IDが「5」のドキュメントからフィールド「name」を指定しました。 $ filterのパラメーターcondには、フィールド「$ name」を受け取り、それに定義された文字列値と一致する$eq演算子があります。

上記のクエリを実行すると、エラーメッセージは、図に示すように、型が$filter演算子の配列である必要があることを示しています。

例4:Ubuntu20.04のMongoDBで$this変数を指定して$filter演算子を使用する:

以前のケースでは、「as」パラメーターを使用して変数に名前を付けました。 asパラメーターはオプションです。 このフィールドを空白に設定すると、変数名はデフォルトで「this」になります。

ここでは、$match内の指定されたコレクションのドキュメントからidフィールドを選択する$in演算子で配列を指定しました。 次に、$filterにはinputとcondの2つのパラメーターがあります。 condパラメーターには、65より大きいマークを取得するgreater than演算子があります。パラメーターとして使用していませんが、代わりに$$thisフィールド名を使用しました。

したがって、$$ thisを使用してフィールドを参照すると、「as」と同じ結果が得られます。 出力は、図に示されている$match条件と$filter条件で満たされています。

結論:

これはMongoDBフィルターガイドです。 この記事では、MongoDBでのフィルターの定義、構文、および機能について説明しました。 例とコードの実装も提供されています。 配列フィールドの要素は、MongoDBフィルター演算子を使用してフィルター処理されます。 配列要素からデータを取得するために、$ gt、$ lt、$ gte、$lteなどのいくつかの条件を利用しました。

The post MongoDBフィルタークエリ appeared first on Gamingsym Japan.