使用正则表达式的mongodb查询中出现意外结果

时间:2017-08-03 15:08:19

标签: regex mongodb

下面的第一个查询显示了集合的完整内容,以下三个查询按预期返回一个项目。

为什么最后一个查询会返回两个项目?

> db.log.find()
{ "_id" : 123, "user" : "stefano" }
{ "_id" : 456, "user" : "franco" }
> db.log.find({'user':/st/})
{ "_id" : 123, "user" : "stefano" }
> db.log.find({'user':/fr/})
{ "_id" : 456, "user" : "franco" }
> db.log.find({'user':/st*/})
{ "_id" : 123, "user" : "stefano" }
> db.log.find({'user':/fr*/})
{ "_id" : 123, "user" : "stefano" }
{ "_id" : 456, "user" : "franco" }

1 个答案:

答案 0 :(得分:2)

因为在Regex中*是一个量词(在零和无限次之间匹配)。因此/fr*/正则表达式与f字面匹配,r零或无限次匹配。 (https://regex101.com/r/M8h249/1

如果你想创建一个匹配&#34的正则表达式;以"开头然后您可以使用以下内容:/^fr/