Docs Menu
Docs Home
/ / /
Scala
/

フィルター

項目一覧

  • 比較
  • 論理
  • 配列
  • 要素
  • 評価
  • Bitwise
  • 地理空間

Filters クラスは、 MongoDBクエリ演算子 の静的ファクトリー メソッドを提供します。各メソッドはBson 型のインスタンスを返します。このインスタンスは、クエリフィルターを必要とする任意のメソッドに渡すことができます。

次のコードに示すように、 Filtersクラスのメソッドを静的にインポートできます。

import org.mongodb.scala.model.Filters._

このガイドの例では、この静的インポートを前提としています。

比較演算子のメソッドには、次のものがあります。

  • eq: 指定値と等しい値と一致します。 eqは予約語であるため、 equalのエイリアス。

  • gt: 指定値を超える値と一致します。

  • gte: 指定値以上の値と一致します。

  • lt: 指定値未満の値と一致します。

  • lte: 指定値以下の値と一致します。

  • ne: 指定値と等しくないすべての値と一致します。 neqは予約語であるため、 notEqualのエイリアス。

  • in: 配列の指定値のいずれかと一致します。

  • nin: 配列の指定値のいずれとも一致しません。

  • empty: すべてのドキュメントと一致します。

次の例では、 qtyフィールドの値が20であるすべてのドキュメントを選択するフィルターを作成します。

`eq`("qty", 20)
equal("qty", 20)

次の例では、 qtyフィールドの値が5または15であるすべてのドキュメントを選択するフィルターを作成します。

in("qty", 5, 15)

次の例では、フィルターが空であるため、すべてのドキュメントを選択するフィルターを作成します。

empty()

論理演算子のメソッドには、次のものがあります。

  • and: 論理的なANDでフィルターを結合し、両方のフィルターの条件に一致するすべてのドキュメントを選択します。

  • or: 論理演算子ORでフィルターを結合し、いずれかのフィルターの条件に一致するすべてのドキュメントを選択します。

  • not: クエリ式の効果を反転させ、フィルターに一致しないドキュメントを選択します。

  • nor: 論理的なNORでフィルターを結合し、いずれのフィルターにも一致しないすべてのドキュメントを選択します。

次の例では、 qtyフィールドの値が20より大きく、 userフィールドの値が"jdoe"であるすべてのドキュメントを選択するフィルターが作成されます。

and(gt("qty", 20), equal("user", "jdoe"))

and()メソッドは、クエリ言語が暗黙的にフィルター内のすべての要素を結合するため、必要な場合にのみ$and演算子を生成します。 上記の例では、次のようにレンダリングされます。

{
"qty" : { "$gt" : 20 },
"user" : "jdoe"
}

次の例では、 priceフィールド値が0.99または1.99に等しく、かつsaleフィールド値がtrueまたはqtyフィールド値が20未満であるすべてのドキュメントを選択するフィルターを作成します。 :

and(or(equal("price", 0.99), equal("price", 1.99)
or(equal("sale", true), lt("qty", 20)))

このクエリは暗黙的な$and操作を使用して構築することはできません。 $or演算子を複数回使用するためです。 このクエリは次のようにレンダリングします。

{
"$and" :
[
{ "$or" : [ { "price" : 0.99 }, { "price" : 1.99 } ] },
{ "$or" : [ { "sale" : true }, { "qty" : { "$lt" : 20 } } ] }
]
}

配列演算子のメソッドには、次のものがあります。

  • all: クエリで指定されたすべての要素を含む配列と一致します。

  • elemMatch: 配列フィールド内の要素が指定されたすべての$elemMatch条件と一致する場合にドキュメントを選択します。

  • size: 配列フィールドが指定されたサイズの場合にドキュメントを選択します。

次の例では、 "ssl""security"の両方を含むtags配列を持つドキュメントを選択します。

all("tags", "ssl", "security")

要素演算子のメソッドには、次のものがあります。

  • exists: 指定したフィールドがあるドキュメントを選択します。

  • type: フィールドが指定された型である場合、ドキュメントを選択します。 typeは予約語であるため、 bsonTypeのエイリアス。

次の例では、 qtyフィールドを含み、かつこのフィールドの値が5または15と等しくないドキュメントを選択します。

and(exists("qty"), nin("qty", 5, 15))

評価演算子のメソッドには、次のものがあります。

  • mod: フィールド値に対して剰余演算を実行し、指定された結果を持つドキュメントを選択します。

  • regex: 指定された正規表現に一致する値を持つドキュメントを選択します。

  • text: 全文検索式に一致するドキュメントを選択します。

  • where: JavaScript 式を満たすドキュメントに一致します。

次の例では、フィールドabstractにテキスト インデックスを持つコレクション を想定しています。 選択されるのは、 "coffee"というタームを含むabstractフィールドがあるドキュメントを選択します。

text("coffee")

テキスト インデックスでは、大文字と小文字を区別した検索が可能です。 次の例では、 "coffee"というタームを含むabstractフィールドがあるドキュメントを選択します。

text("coffee", TextSearchOptions().caseSensitive(true))

テキスト インデックスでは、発音区別符号を区別する検索が可能です。 次の例では、 "café"というタームを含むabstractフィールドがあるドキュメントを選択します。

text("café", TextSearchOptions().diacriticSensitive(true))

ビット演算子のメソッドには、次のものがあります。

  • bitsAllSet: フィールドの指定されたビットがすべて設定されているドキュメントを選択します。

  • bitsAllClear: フィールドの指定されたビットがすべてクリアされているドキュメントを選択します。

  • bitsAnySet: フィールドの指定されたビットの少なくとも1つがセットされているドキュメントを選択します。

  • bitsAnyClear: フィールドの指定されたビットの少なくとも1つがクリアされているドキュメントを選択します。

この例では、対応するビットマスク5000110010 )の位置にビットが設定されているbitFieldフィールドがあるドキュメントを選択します。

bitsAllSet("bitField", 50)

地理空間演算子のメソッドには、次のものがあります。

  • geoWithin: 境界となるGeoJSONジオメトリに含まれるGeoJSONジオメトリである値を持つフィールドを含むすべてのドキュメントを選択します。

  • geoWithinBox: 指定したボックス内に完全に存在するグリッド座標データを持つフィールドを含むすべてのドキュメントを選択します。

  • geoWithinPolygon: 指定した多角形内に完全に存在するグリッド座標データを持つフィールドを含むすべてのドキュメントを選択します。

  • geoWithinCenter: 指定した円内に完全に存在するグリッド座標データを持つフィールドを含むすべてのドキュメントを選択します。

  • geoWithinCenterSphere: 球状ジオメトリを使用して、指定された円内に完全に存在する地理空間データ( GeoJSONまたはlegacy coordinate pairs)を含むフィールドを選択します。

  • geoIntersects: GeoJSONジオメトリと交差するジオメトリを選択します。 2dsphereインデックスは$geoIntersectsをサポートします。

  • near: 点に近接する地理空間オブジェクトを返します。 地理空間インデックスが必要です。 2dsphereインデックスと2dインデックスは$nearをサポートします。

  • nearSphere: 球上の点に近接する地理空間オブジェクトを返します。 地理空間インデックスが必要です。 2dsphereインデックスと2dインデックスは$nearSphereをサポートします。

GeoJSONベースのフィルタを作成しやすくするために、ドライバーには完全なGeoJSONクラス階層も含まれています。

  • Point: の表現 GeoJSON Point

  • MultiPoint: の表現 GeoJSON MultiPoint

  • LineString: の表現 GeoJSON LineString

  • MultiLineString: の表現 GeoJSON MultiLineString

  • Polygon: の表現 GeoJSON Polygon

  • MultiPolygon: の表現 GeoJSON MultiPolygon

  • GeometryCollection: の表現 GeoJSON GeometryCollection

次の例では、 geoフィールドに、指定された多角形に含まれるGeoJSON Geometryオブジェクトが含まれているすべてのドキュメントを選択するフィルターが作成されます。

val polygon: Polygon = Polygon(Seq(Position(0, 0), Position(4, 0),
Position(4, 4), Position(0, 4),
Position(0, 0)))
geoWithin("geo", polygon)

次の例では、 geoフィールドに、特定のPointと交差するGeoJSON Geometryオブジェクトが含まれているすべてのドキュメントを選択するフィルターが作成されます。

geoIntersects("geo", Point(Position(4, 0)))

戻る

ビルダ