sql >> Databasteknik >  >> NoSQL >> MongoDB

Bitvis enum (flaggor) fråga med MongoDB:s officiella C#-drivrutin

Från och med MongoDB v 3.2 kan du använda bitsAllSet eller bitsAnySet beroende på vad du söker efter.

Så, med C# MongoDB-drivrutinen:

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

Obs :Det finns ett öppet problem att använda index på Bitwise-operationer. På MongoDB 4.2 använder de dem fortfarande inte, så tänk på om du planerar att använda dem massivt (det var vi och vi var tvungna att omstrukturera allt efteråt).



  1. Hur man returnerar bara värdet i MongoDB

  2. Mongodb:Ostödd konvertering från array till objectId i $convert utan onError-värde

  3. forEach itererar inte all samling i mongodb

  4. konvertera UTC-tidsstämpel till någon annan zontidsstämpel