MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Query bitwise enum (flags) utilizzando il driver C# ufficiale di MongoDB

A partire da MongoDB v 3.2 puoi utilizzare bitsAllSet o bitsAnySet a seconda di cosa stai cercando.

Quindi, con il 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));

Nota :c'è un problema aperto per utilizzare indici su operazioni Bitwise. Su MongoDB 4.2 non li usano ancora, quindi fai attenzione se hai intenzione di usarli in modo massiccio (noi eravamo e abbiamo dovuto rifattorizzare tutto in seguito).