MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да превключите булево поле в един документ с атомна операция?

В момента не мисля, че е възможно да се направи това с една операция. Побитовите оператори (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, вие използвате модула оператор, за да видите дали е четен или нечетен, като дори е "ненастроен" и нечетен е "настроен". Ако искате да имате противоположно поведение (т.е. да намерите всички елементи, които нямат зададен флаг), тогава използвайте

[ 2, 0 ];


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb проверява дали точката е в многоъгълник

  2. Планиране и управление на схеми в MongoDB (дори въпреки че е безсхемно)

  3. Как да използвам guid в заявка за обвивка на mongodb

  4. mongodb - Намерете документ с най-близката целочислена стойност

  5. Направи си сам облачна база данни на Amazon Web Services – Нова бяла книга