Boolean
е естествен тип поле в BSON
(Форматът за съхранение от страна на сървъра на MongoDB, известен още като "Binary JSON"). Булевите стойности използват по-малко памет от цяло число или низ и избягват всякакви неочаквани странични ефекти от сравнението.
Например в MongoDB find()
заявка за низ от "1"
няма да съответства на числова стойност 1
или булева стойност true
. Ако искате да съхранявате булеви стойности, определено използвайте булев тип.
Сравняване на размера на BSON (в байтове) в mongo
shell за пълнота:
// Number (JavaScript double) - 8 bytes
> var foo = { a: 1 }
> Object.bsonsize(foo)
16
// UTF-8 String - 6 bytes
> var foo = { a: '1'}
> Object.bsonsize(foo)
14
// 32-bit int - 4 bytes
> var foo = { a: NumberInt(1)}
> Object.bsonsize(foo)
12
// Boolean - 1 byte
> var foo = { a: true}
> Object.bsonsize(foo)
9
Забележка:основният размер на JSON обекта в примерите по-горе (без да се броят стойностите на полетата) е 8 байта, така че разликата между отчетените Object.bsonsize()
е представянето на стойността на полето.