sql >> Database >  >> NoSQL >> MongoDB

Bitwise enum (vlaggen) query met MongoDB's officiële C#-stuurprogramma

Vanaf MongoDB v 3.2 kunt u bitsAllSet gebruiken of bitsAnySet afhankelijk van waar je naar zoekt.

Dus, met C# MongoDB Driver:

//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));

Opmerking :Er is een open probleem om indexen te gebruiken voor Bitwise-bewerkingen. Op MongoDB 4.2 gebruiken ze ze nog steeds niet, dus let op als je van plan bent ze massaal te gebruiken (we waren en we moesten alles achteraf refactoren).



  1. Jest en Redis (probleem met unit-tests met databasecache)

  2. MongoDB voor commercieel gebruik

  3. Hoe geneste documenten recursief te doorkruisen in MongoDB

  4. Ingesloten MongoDB bij het uitvoeren van integratietests