Hiện tại, tôi không nghĩ rằng có thể làm được điều này chỉ với một thao tác. Các toán tử bitwise (http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit) chưa có '$ xor' mặc dù tôi đã có bản vá cho nó.
Hiện tại, giải pháp mà tôi nghĩ đến là luôn sử dụng '$ inc':
cl.update( { "_id": ...}, { '$inc' : { 'field' : 1 } } );
Sau đó, thay vì kiểm tra đúng hay sai, bạn có thể kiểm tra xem một mục là "đúng":
cl.find( { "_id": ..., 'field' : { '$mod' : [ 2, 1 ] } );
IE, bạn sử dụng toán tử modulo để xem nó đồng đều hay không đồng đều với việc được "đặt" và không đồng đều được "đặt". Nếu bạn muốn có hành vi đối lập (tức là tìm tất cả các mục không có cờ được đặt), thì hãy sử dụng
[ 2, 0 ];