Boolean
è un tipo di campo nativo in BSON (il formato di archiviazione sul lato server di MongoDB, noto anche come "JSON binario"). I booleani utilizzano meno spazio di archiviazione di un intero o di una stringa ed evitano effetti collaterali imprevisti di confronto.
Ad esempio, in un MongoDB find()
richiesta una stringa di "1"
sarà non corrisponda a un valore numerico di 1
o un valore booleano di true
. Se vuoi memorizzare valori booleani, usa sicuramente un tipo booleano.
Confrontando le dimensioni BSON (in byte) nella mongo
coperture per completezza:
// 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
Nota: la dimensione base dell'oggetto JSON negli esempi sopra (senza contare i valori di campo) è di 8 byte, quindi la differenza tra Object.bsonsize()
è la rappresentazione del valore del campo.
Perché dovresti usare _anything_ diverso da un valore booleano ('true' /' false')? –
wellllllllllllllllllll. a corto di dire è un trucco o scherzetto. si può trattare un valore nullo o non definito come -1 contrario a vero/falso. quindi un numero. ma si possono trovare valori non definiti usando $ esiste in mongodb. quindi nessun vantaggio. eccetto che è possibile indicizzare undefined .... –