sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik een booleaans veld in één document wisselen met atomaire bewerking?

Op dit moment denk ik niet dat het mogelijk is om dit met één operatie te doen. De bitsgewijze operators (http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit) hebben nog geen '$xor', hoewel ik er een patch voor heb.

Op dit moment is de tijdelijke oplossing die ik denk, door altijd '$inc' te gebruiken:

cl.update( { "_id": ...}, { '$inc' : { 'field' : 1 } } );

In plaats van te controleren op waar of onwaar, kunt u controleren of een item "waar" is:

cl.find( { "_id": ..., 'field' : { '$mod' : [ 2, 1 ] } );

IE, u gebruikt de modulo-operator om te zien of het even of ongelijk is, waarbij zelfs "uitgeschakeld" is en ongelijk "ingesteld". Als u het tegenovergestelde gedrag wilt hebben (dwz alle items zoeken waarvoor de vlag niet is ingesteld), gebruik dan

[ 2, 0 ];


  1. MongoDB en CodeIgniter

  2. MongoDB $asin

  3. Welke MongoDB-gebruikersrechten heb ik nodig om een ​​gebruiker toe te voegen aan een nieuwe/andere mongo-database?

  4. Dupliceer een document in MongoDB met een nieuwe _id