sql >> Databáze >  >> NoSQL >> MongoDB

Jak přepnout booleovské pole v jednom dokumentu s atomickou operací?

Právě teď si myslím, že to nejde udělat jednou operací. Bitové operátory (http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit) ještě nemají '$xor', i když pro něj mám patch.

Právě teď si myslím, že řešením je vždy používat '$inc':

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

Potom můžete místo kontroly pravdivosti nebo nepravdy zkontrolovat, zda je položka „pravda“:

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

IE, pomocí operátoru modulo zjistíte, zda je sudý nebo nerovnoměrný, když je sudé "nenastaveno" a nerovnoměrné je "nastaveno". Pokud chcete mít opačné chování (tj. najít všechny položky, které nemají nastaven příznak), použijte

[ 2, 0 ];


  1. Jak spouštět surové MongoDB dotazy přímo v Ruby

  2. Jak implementovat MongoDB vnořený $elemMatch Query v C#

  3. Jednotky, které se mají použít pro maxdistance a MongoDB?

  4. MongoDB $anyElementTrue