下面的第一个查询显示了集合的完整内容,以下三个查询按预期返回一个项目。
为什么最后一个查询会返回两个项目?
> 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" }
答案 0 :(得分:2)
因为在Regex中*
是一个量词(在零和无限次之间匹配)。因此/fr*/
正则表达式与f
字面匹配,r
零或无限次匹配。 (https://regex101.com/r/M8h249/1)
如果你想创建一个匹配&#34的正则表达式;以"开头然后您可以使用以下内容:/^fr/
。