gpt4 book ai didi

scala - 如何查询 Array[String] 中的正则表达式匹配项?

转载 作者:行者123 更新时间:2023-12-02 05:02:53 25 4
gpt4 key购买 nike

我尝试通过 Casbah 查询 MongoDB 的字段,该字段是带有正则表达式的字符串数组。

例如:

我有一个带有 ip 列表的 Maschine,这些列表作为字符串存储在 ips 字段中。现在我想搜索所有具有子网 192.168 的计算机。

对我来说,我看起来无法查询一个对每个条目应用正则表达式的数组,如果其中一个条目匹配,则返回机器。

有什么方法可以进行这样的查询吗?

-- 已修复

感谢您的帮助。

现在一切正常。最后,我需要解决 Casbah 的一个限制,因为我需要使用 $or 加入查询,而 Casbah 提示正则表达式缺少隐式。

带有附加其他字段的 RegExp 数组查询的最终代码是:

val regexp = ".*" + parameter + ".*"
val nameQ = MongoDBObject("serverName" -> regexp.r)
val ipsQ = MongoDBObject("ips" -> regexp.r)
val bldr = MongoDBList.newBuilder
bldr += ipsQ
bldr += nameQ
val query = MongoDBObject("$or" -> bldr.result.asDBObject)
val result = find(query)

这不是最好的代码,参数的字符串连接需要修复。但它有效:)

最佳答案

您可以忽略这是一个数组的事实:

> db.rx.insert( { "ips" : ["192.168.1.231", "192.168.2.231", "120.32.42.51"] });
> db.rx.find( { ips : /192./ } )
{ "_id" : ObjectId("4f104f0183bfca7a48b60da1"),
"ips" : [ "192.168.1.231", "192.168.2.231", "120.32.42.51" ] }

MongoDB 的行为始终是这样的:如果您将数组视为普通字段,它会将操作应用于每个成员,如果有一个匹配,则将父文档视为匹配。

关于scala - 如何查询 Array[String] 中的正则表达式匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com