Just nu tror jag inte att det går att göra det här med en operation. De bitvisa operatorerna (http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit) har ingen '$xor' ännu även om jag har en patch för det.
Just nu är den lösning jag tänker på genom att alltid använda '$inc':
cl.update( { "_id": ...}, { '$inc' : { 'field' : 1 } } );
Istället för att kontrollera om det är sant eller falskt, kan du kontrollera om ett objekt är "sant":
cl.find( { "_id": ..., 'field' : { '$mod' : [ 2, 1 ] } );
IE, du använder modulo-operatorn för att se om det är jämnt eller ojämnt med att till och med vara "unset" och ojämnt vara "inställt". Om du vill ha det motsatta beteendet (dvs. hitta alla objekt som inte har flaggan inställd), använd sedan
[ 2, 0 ];