2017-08-03 58 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/