0

我在 Mysql 中有一个表,其中有一些 D 和 C 类的 IP,我使用该表来测试请求 IP 是否在数据库中或属于这样的 C 类:

select * from My_Table 
where '192.168.1.12' LIKE CONCAT(ip, '%');

(其中 192.168.1.12 是我正在针对我的表测试的请求 IP)

在我的数据库中,如果我有 C 格式的 ip '192.168.1',我会得到一个匹配项。

我正在考虑使用 MongoDB 并在每个 IP(C 或 D 类格式)是 _id (默认索引)的文档中具有相同的信息。

如果正则表达式正好相反,我怎样才能让它与 MongoDB 一起工作?(如果我事先有 C 课)

如果我将每个请求 IP 拆分为 C 类以使用正则表达式进行检查,例如:

db.my_table.find(_id: '^/split_ip/')

我必须通过迭代再次检查我的应用程序的每个结果,我认为这不是一个好的解决方案。

所以,我想知道您是否有任何建议或建议给我。

4

1 回答 1

0

您可以使用 $in 运算符从单个查询中获取所有匹配项。

{ _id: {$in : [/^192.0.1.1/, /^194.1.1/ ] }}

因为您/^在正则表达式中使用选项,所以将使用索引。

这有帮助吗?

于 2013-01-28T13:40:54.947 回答