2017-08-03 6 views
0

次の最初のクエリはコレクションの完全な内容を示し、次の3つのクエリは1つのアイテムを期待どおりに返します。正規表現のmongodbクエリで予期しない結果が発生しました

最後のクエリで2つの項目が返されるのはなぜですか?

> 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

正規表現に*は、数量詞(ゼロと無制限の時間の間のマッチ)であるので。そのため、正規表現/fr*/は、fと、0または無制限の時間はrと一致します。 (https://regex101.com/r/M8h249/1

"starts with"のような正規表現を作成したい場合は、/^fr/を使用できます。

関連する問題