В MongoDB уже довольно давно существует оператор по имени $bit для выполнения битовых операций and | or | xor. И вот, как говорится не прошло и года, а на самом деле спустя четыре года, в версии 3.1.6 появилась возможность выполнять запросы по битовой маске. Я ждал эту фичу, предлагаю затестить:
Что это было:
- db.t.insert({a: NumberInt(5)}) - создаем документ, (5).toString(2) === "101"
- db.t.find({a: {$bitsAllSet: [0, 2]}}) - получили документ (можно {$bitsAllSet: 5}, но с массивом нагляднее)
- db.t.find({a: {$bitsAllSet: [0, 1, 2]}}) - не получили документ (можно {$bitsAllSet: 7})
- db.t.update( {_id: ObjectId("55cc636b9cbff3677c3100db")}, {$bit: {a: {or: NumberInt(2)}}} ) - поменяли целевой бит
- db.t.find({a: {$bitsAllSet: [0, 1, 2]}}) - бинго
Остальные операторы тестим самостоятельно.
Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации