2017-08-03 48 views
0

下面的第一个查询显示集合的完整内容,并且以下三个查询按预期返回一个项目。使用正则表达式的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" } 

回答

2

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

如果你想创建一个像“开始”匹配的正则表达式,那么你可以使用以下:/^fr/