2017-08-22 8 views
0

"student_collection"という名前のコレクションがあり、このコレクションには次のフィールドがあります。大文字と小文字を区別するクエリでMongoDBコレクションをカウントする

1) _id 2) user_name 3) first_name 4) last_name 

以下の値を有する。

ObjectId("5996e8308a4931d0e910cd2d")  testuser  Test  User 
ObjectId("5996fa9c8a4931d0e910cd31")  devuser  Dev  User 

私はユニークなフィールド "user_name"でユーザーカウントを取得しようとしています。私が以下の要求をした場合、私は正しいカウントを得ました。

var query = BSONDocument("user_name" -> "testuser") 

val count = collection.db.command(
     Count(
     collection.name, 
     Some(query) 
    ) 
) 

大文字と小文字を区別するクエリを使用してコレクションの数を取得するにはどうすればよいですか?例えば

var query = BSONDocument("user_name" -> "TestUser") 

私は、以下のバージョンを使用しています:あなたの提案のための

scalaVersion := "2.11.8" 
"org.reactivemongo" %% "reactivemongo" % "0.11.14" 
+0

これは、サーバーのMongoDBのバージョンと、使用している基本となるドライバのバージョンによって異なります。現代のMongoDBのバージョンでは、インデックスとその後のクエリ操作で大文字と小文字を区別しないオプションを定義することができます。最近のバージョンとドライバのサポートがなければ、フルコレクションスキャンを呼び出す正規表現を使用します。 –

+0

@NeilLunnありがとう。私はreactmongo、scalaのバージョンを更新し、私の質問でMongoDBドライバを使用しました。 – SKK

+0

ほとんどの場合、実際のサーバーのバージョンと、必要なオプションを発行するための最新のドライバリリースがあります。しかし、 "サーバー"は重要なことであり、少なくともMongoDB 3.4が必要です。 –

答えて

0

@Neil LUNNの感謝を。 BSONRegexが動作しています。

var query = BSONDocument("user_name" -> BSONRegex("^" + "TestUser", "i")) 
関連する問題