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

Bitwise enum (flag) forespørgsel ved hjælp af MongoDB's officielle C# driver

Fra og med MongoDB v 3.2 kan du bruge bitsAllSet eller bitsAnySet alt efter hvad du søger efter.

Så med 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));

Bemærk :Der er et åbent problem at bruge indekser på Bitwise-operationer. På MongoDB 4.2 bruger de dem stadig ikke, så vær opmærksom på, hvis du planlægger at bruge dem massivt (det var vi, og vi var nødt til at refaktorere alt bagefter).



  1. MongoDB fuld og delvis tekstsøgning

  2. Behov for at beregne dato- og klokkeslætsforskellen for feltet datetime gemt i strengformat i MongoDB

  3. MongoDB:Sortering af data ved brug af DBcollection find

  4. Upload data til Meteor / Mongo DB