MongoDb RegEx示例查询中的数字

时间:2014-03-24 05:19:08

标签: mongodb mongodb-query

节点驱动程序中的示例显示了一个用于对数字的简单正则表达式。

collection.find({'a':/[1|2]/})

集合在哪里

collection.insert([{'a':1}, {'a':2}, {'b':3}]

这在shell和运行节点中的示例中都失败了。

这是一个例子 https://github.com/mongodb/node-mongodb-native/blob/1.4/examples/queries.js

我不希望这个工作正常,因为正则表达式用于文本...但它在当前的例子中...所以我认为它必须是正确的,我错过了一些东西.. 如果值是字符串{a:'1'},那么样本工作正常...我错过了什么或者样本是否过时了......

2 个答案:

答案 0 :(得分:1)

你没有遗漏任何东西。 $ regex操作将处理字符串。也来自手册

  

$ regex运算符为查询中的模式匹配字符串提供正则表达式功能。 MongoDB使用Perl兼容的正则表达式(即“PCRE。”)

所以突出显示的术语是“字符串”,这正是应该的原因。

从此源头。这是一个“奇怪的”例子,但只应被视为“例子”。所以代码没有任何内在的“错误”。它只是没有返回任何结果。因此,可以说仍然有效。没有人说它“应该”匹配文件。

如果您认为应该是其他情况,请随时提交拉取请求和/或JIRA

答案 1 :(得分:0)

如果你需要使用带数字的正则表达式,你可以这样做:

collection.find({ $where: "/[1|2]/.test(this.a)" })

但请记住,according to the documentation,MongoDB无法使用$where的索引:

  

$where评估JavaScript并且无法利用索引。因此,当您使用标准MongoDB运算符表达查询时,查询性能会提高(例如$gt$in)。