W tej chwili nie sądzę, że można to zrobić za pomocą jednej operacji. Operatory bitowe (http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit) nie mają jeszcze „$xor”, chociaż mam na nie poprawkę.
Obecnie myślę o obejściu, o którym myślę, że zawsze używam „$inc”:
cl.update( { "_id": ...}, { '$inc' : { 'field' : 1 } } );
Następnie zamiast sprawdzać, czy dana pozycja jest prawdziwa czy fałszywa, możesz sprawdzić, czy pozycja jest „prawda”:
cl.find( { "_id": ..., 'field' : { '$mod' : [ 2, 1 ] } );
To znaczy, używasz operatora modulo, aby zobaczyć, czy jest parzysty, czy nieparzysty, z parzystym „nieustawionym”, a nieparzystym „ustawionym”. Jeśli chcesz zachować odwrotne zachowanie (tzn. znaleźć wszystkie elementy, które nie mają ustawionej flagi), użyj
[ 2, 0 ];