1

假设我在 mongodb 中有一个表,其数据结构如下所示:

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

我将如何编写查询,以便检索其完整语言代码或该语言代码的子字符串(2 个字符)在我的 languageCodeFilter 字符串列表中的条目?因此,如果条目的语言代码是“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 回答