MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête d'énumération (drapeaux) au niveau du bit utilisant le pilote C # officiel de MongoDB

À partir de MongoDB v 3.2, vous pouvez utiliser bitsAllSet ou bitsAnySet selon ce que vous recherchez.

Ainsi, avec le pilote 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));

Remarque  :Il y a un problème ouvert pour utiliser des index sur les opérations au niveau du bit. Sur MongoDB 4.2, ils ne les utilisent toujours pas, alors faites attention si vous prévoyez de les utiliser massivement (nous l'étions et nous avons dû tout refactoriser par la suite).