sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur växlar man ett booleskt fält i ett dokument med atomär drift?

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 ];


  1. runCommand-ekvivalent för nodejs-native-mongodb

  2. mongoose schema skapande

  3. Konfigurera Apache Reverse Proxy för att vara värd för Laravel Echo Server vid produktion

  4. Hur man startar mongo db på Windows