scala – 如何查询数组[String]以获取正则表达式匹配?
发布时间:2020-12-16 09:00:10 所属栏目:安全 来源:网络整理
导读:我尝试通过Casbah查询MongoDB的字段是一个带有正则表达式的字符串数组. 例如: 我有一个带有ips列表的Maschine,它在字段ips中以字符串形式存储. 现在我想搜索所有具有子网192.168的计算机. 对我来说,我看起来我无法查询应用于每个条目的regexp的数组,如果其
我尝试通过Casbah查询MongoDB的字段是一个带有正则表达式的字符串数组.
例如: 我有一个带有ips列表的Maschine,它在字段ips中以字符串形式存储. 对我来说,我看起来我无法查询应用于每个条目的regexp的数组,如果其中一个条目匹配,则返回该机器. 有什么方法可以进行这样的查询吗? – 修正了 谢谢你的帮助. 现在一切都有效.最后我需要解决Casbah的一个限制,因为我需要加入查询与$或和Casbah抱怨错误地使用regexp. 我的RegExp Array查询的最终代码包含另外一个字段: 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","120.32.42.51" ] } MongoDB的行为总是如下:如果您将数组视为普通字段,它会将操作应用于每个成员,如果匹配,则认为父文档匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读