【发布时间】:2021-01-18 00:34:47
【问题描述】:
我需要准备一个查询,该查询将运行正则表达式来检查包含结果。 我收集了两个包含employeeIds 的文档:Rabin 和Begin 我想查找员工姓名包含 List("ab", "it") 的文档。相关的mongo查询:
db.tasks.find( { employeeId : {$in : [/ab/, /it/]} } )
它返回一个employeeId 为“Rabin”的结果文档。 问题是我如何将此查询转换为 Scala 代码?我已经实现了以下测试代码:
val fieldName: String = "employeeId"
val value: List[String] = List("ab", "it")
val formattedVals = value.map ("/".concat(_).concat("/"))
val mySelector = BSONDocument(fieldName -> BSONDocument("$in" -> formattedVals))
println(s"formattedVals: $formattedVals")
println(BSONDocument.pretty(mySelector))
collection.findAndUpdate(
selector = mySelector,
update = BSONDocument("$set" ->BSONDocument(
"CompanyId" -> "1000")),
fetchNewObject = true
).map(el => el.result[GatorTask].getOrElse {
throw new NoSuchElementException(s"No Document was found to match the query")
})
但是得到异常的结果被抛出.. 打印输出:
formattedVals: List(/ab/, /it/)
{
'employeeId': {
'$in': [
'/ab/',
'/it/'
]
}
}
在“slashed”参数周围带有单引号的 mongo 查询不返回任何结果。 任何想法如何在 Scala 中实现所需的查询?
【问题讨论】: