Хотя вы можете сделать это таким образом, я бы предложил использовать отдельные логические поля для каждого флага. Это займет больше места, но будет быстрее запрашивать, потому что он не будет использовать JavaScript и может использовать индексы при необходимости. Если вам нужны битовые поля для других частей вашего приложения, вы можете поддерживать их оба в актуальном состоянии, как показано ниже (при условии, что a, b, c ... отображаются в биты 0,1,2 ...):
db.c.update({_id:ID}, {$set:{a:true}, $bit:{bits: {or: 0x1}}})
db.c.update({_id:ID}, {$set:{c:false}, $bit:{bits: {and: ~0x8}}})