1

次のようなデータ構造を持つ mongodb のテーブルがあるとします。

{
    _id: "123456",
    provider: "apple",
    languageCode: "en-US",
    data: "some data"
}

完全な言語コードまたはその言語コードの部分文字列 (2 文字) が languageCodeFilter 文字列リストに含まれるエントリを取得するには、クエリをどのように記述すればよいですか? したがって、エントリの languageCode が「en-US」または「en-CA」の場合、フィルターに「en」があるため一致します。エントリに「fr」または「fr-FR」が含まれている場合、「fr-CA」のみを求めているため、返されません。

val provider: String = "apple"
val languageCodeFilter : List[String] = List("en", "fr-CA", "it")
val query: DBObject = MongoDBObject("provider" -> provider
  , /* what do i put here? */)
4

1 に答える 1

2

正規表現を構築できます。私はそれをテストする環境を整えていませんが、これはあなたが軌道に乗るのに役立つはずです:

import com.mongodb._
val regex = languageCodeFilter map ( l => s"(?:.*\\Q$l\\E.*)" ) mkString "|" r
val query = QueryBuilder.start("languageCode").regex(regex).get
于 2013-10-01T22:02:47.877 に答える