在MongoDb中是否可以查询与给定字符串匹配的模式?

时间:2011-11-03 08:34:45

标签: mongodb

我有一个消息系统,我想要不同的消息处理程序 根据传入消息的模式调用。

我有这个系列:

[
    { Pattern: "^a", Handler: "Handler1" },
    { Pattern: "^b", Handler: "Handler2" },
    { Pattern: "^c", Handler: "Handler3" }
]

对于给定的消息(字符串),我现在想要找到第一个元素 消息与模式匹配,然后提取处理程序 名。

也就是说,对于消息“b bla bla bla”,我想提取 “Handler2”。

注意,我不想使用正则表达式查询来查找一些字符串 数据库,它是另一种方式: 我想找到具有与给定匹配的模式的元素 字符串。

我现在的解决方案是获取整个模式列表和 然后迭代并匹配我的应用程序代码中的所有模式 它工作正常,但我想知道是否有一些有效的mongo 可以用来代替查询吗?

2 个答案:

答案 0 :(得分:1)

如果模式的数量很少,你现在就应该这么做。

如果您有大量模式,您将成为Halting problem变体的受害者: 在您使用输入字符串实际执行模式之前,没有简单的方法可以知道模式是否匹配(将模式视为迷你程序)。

或者:鉴于只有一组有限的输入(可能不是这种情况),您可以在MongoDB中存储所有可能的输入及其相应的模式。

希望有所帮助。

答案 1 :(得分:0)

可能您需要自己实施匹配检查并使用map / reduce样式进行应用。