Right now, I don't think it's possible to do this with one operation. The bitwise operators (http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit) don't have a '$xor' yet although I've a patch for it.
Right now the workaround I think think of is by always using '$inc':
cl.update( { "_id": ...}, { '$inc' : { 'field' : 1 } } );
Then instead of checking for true or false, you can do check whether an item is "true":
cl.find( { "_id": ..., 'field' : { '$mod' : [ 2, 1 ] } );
IE, you using the modulo operator to see whether it's even or uneven with even being "unset", and uneven being "set". If you want to have the oppposite behaviour (ie, find all items that don't have the flag set), then use
[ 2, 0 ];
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…