Прямо сейчас, я не думаю, что это возможно сделать с одной операцией. Побитовые операторы (http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit) еще не имеют «$ xor», хотя у меня есть патч для него.
В настоящее время обходным пути, о котором я думаю, всегда используется «$ inc»:
cl.update( { "_id": ...}, { '$inc' : { 'field' : 1 } } );
Затем вместо проверки на истинное или ложное вы можете проверить, является ли элемент «истинным»:
cl.find( { "_id": ..., 'field' : { '$mod' : [ 2, 1 ] } );
IE, вы используете оператор modulo, чтобы убедиться, что он четный или неравномерный, даже будучи «неустановленным», и неравномерно «установлен». Если вы хотите иметь oppposite поведение (т. Е. Найти все элементы, которые не имеют установленного флага), используйте
[ 2, 0 ];