Boolean
est un type de champ natif dans BSON
(Format de stockage côté serveur de MongoDB, alias "Binary JSON"). Les booléens utilisent moins de stockage qu'un entier ou une chaîne et évitent tout effet secondaire inattendu de la comparaison.
Par exemple, dans un MongoDB find()
interroger une chaîne de "1"
ne correspondra pas à une valeur numérique de 1
ou une valeur booléenne de true
. Si vous souhaitez stocker des valeurs booléennes, utilisez définitivement un type booléen.
Comparaison de la taille du BSON (en octets) dans le mongo
shell pour être complet :
// 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
Remarque :la taille de base de l'objet JSON dans les exemples ci-dessus (sans compter les valeurs de champ) est de 8 octets, donc la différence entre le rapport Object.bsonsize()
est la représentation de la valeur du champ.