我有一个消息系统,我想要不同的消息处理程序 根据传入消息的模式调用。
我有这个系列:
[
{ Pattern: "^a", Handler: "Handler1" },
{ Pattern: "^b", Handler: "Handler2" },
{ Pattern: "^c", Handler: "Handler3" }
]
对于给定的消息(字符串),我现在想要找到第一个元素 消息与模式匹配,然后提取处理程序 名。
也就是说,对于消息“b bla bla bla”,我想提取 “Handler2”。
注意,我不想使用正则表达式查询来查找一些字符串 数据库,它是另一种方式: 我想找到具有与给定匹配的模式的元素 字符串。
我现在的解决方案是获取整个模式列表和 然后迭代并匹配我的应用程序代码中的所有模式 它工作正常,但我想知道是否有一些有效的mongo 可以用来代替查询吗?
答案 0 :(得分:1)
如果模式的数量很少,你现在就应该这么做。
如果您有大量模式,您将成为Halting problem变体的受害者: 在您使用输入字符串实际执行模式之前,没有简单的方法可以知道模式是否匹配(将模式视为迷你程序)。
或者:鉴于只有一组有限的输入(可能不是这种情况),您可以在MongoDB中存储所有可能的输入及其相应的模式。
希望有所帮助。
答案 1 :(得分:0)
可能您需要自己实施匹配检查并使用map / reduce样式进行应用。