Boolean
är en inbyggd fälttyp i BSON
(MongoDB:s lagringsformat på serversidan, aka "Binary JSON"). Booleans använder mindre lagring än ett heltal eller en sträng och undviker alla oväntade bieffekter av jämförelser.
Till exempel i en MongoDB find()
fråga en sträng av "1"
kommer inte att matcha ett numeriskt värde på 1
eller ett booleskt värde på true
. Om du vill lagra booleska värden, använd definitivt en boolesk typ.
Jämför BSON-storleken (i byte) i mongo
skal för fullständighetens skull:
// 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
Obs:basstorleken för JSON-objektet i exemplen ovan (utan att räkna fältvärdena) är 8 byte, så skillnaden mellan den rapporterade Object.bsonsize()
är representationen av fältvärdet.