sql >> Base de Datos >  >> NoSQL >> MongoDB

Consulta de enumeración bit a bit (banderas) usando el controlador C# oficial de MongoDB

A partir de MongoDB v 3.2, puede usar bitsAllSet o bitsAnySet dependiendo de lo que estés buscando.

Entonces, con el controlador 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));

Nota :Hay un problema abierto para usar índices en operaciones Bitwise. En MongoDB 4.2 todavía no los usan, así que tenga en cuenta si planea usarlos masivamente (lo hicimos y tuvimos que refactorizar todo después).