节点驱动程序中的示例显示了一个用于对数字的简单正则表达式。
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'},那么样本工作正常...我错过了什么或者样本是否过时了......
答案 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
)。