MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Bitweise Enum-Abfrage (Flags) mit dem offiziellen C#-Treiber von MongoDB

Ab MongoDB v 3.2 können Sie bitsAllSet verwenden oder bitsAnySet je nachdem, wonach Sie suchen.

Also mit dem C# MongoDB-Treiber:

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

Hinweis :Es gibt ein offenes Problem um Indizes für bitweise Operationen zu verwenden. In MongoDB 4.2 verwenden sie sie immer noch nicht, seien Sie sich also bewusst, wenn Sie vorhaben, sie massiv zu verwenden (wir mussten und wir mussten danach alles umgestalten).