MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consulta bitwise enum (flags) usando o driver C# oficial do MongoDB


A partir do MongoDB v 3.2, você pode usar bitsAllSet ou bitsAnySet dependendo do que você está procurando.

Então, com o driver 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));

Observação :há um problema em aberto para usar índices em operações Bitwise. No MongoDB 4.2 eles ainda não os usam, então fique atento se você planeja usá-los massivamente (nós fomos e tivemos que refatorar tudo depois).