ビットごとのフラグ「ステータス」を持つMongoDBでメッセージを取得するための次のコードがあります。そのため、これらのレコードをフィルタリングするために組み込みのBsonJavaScript機能を使用しています。ステートメントは、クエリ評価に JavaScript 構文を使用している場合でも、ToUserId または Status フィールドなどでインデックスを使用しようとしますか?
public long NewMessageCount
{
get
{
var script = CreateScript("Status", MessageStatus.Unread);
return MongoConnectionHandler.MongoCollection.Count(Query.Where(script));
}
}
public string ToUserId = "51e8dd21d84513129c644fa6";
public string CreateScript(string field, MessageStatus filter)
{
return String.Format("this.ToUserId == '{0}' && (this.{1} & {2}) == {3}", ToUserId, field, (int)filter);
}