MongoDB v 3.2以降では、bitsAllSet
を使用できます。 または
したがって、C#MongoDBドライバーを使用する場合:
//Check single Flag as OP
collection.Find(Builders<MyEntity>.Filter.BitsAllSet(myEntity => myEntity.Flags, (long) MyFlags.AFlag));
//Check all multiple Flags
collection.Find(Builders<MyEntity>.Filter.BitsAllSet(myEntity => myEntity.Flags, (long) MyFlags.AFlag | MyFlags.BFlag));
//Check any multiple Flag
collection.Find(Builders<MyEntity>.Filter.BitsAnySet(myEntity => myEntity.Flags, (long) MyFlags.AFlag | MyFlags.BFlag));
注 :未解決の問題 があります ビット演算でインデックスを使用します。 MongoDB 4.2では、まだそれらを使用していないため、大量に使用する予定がある場合は注意してください(以前はすべてをリファクタリングする必要がありました)。