Ответ 1
Boolean
- это собственный тип поля в BSON (формат хранилища на стороне сервера MongoDB, также известный как "Binary JSON" ). Булевы используют меньше памяти, чем целое число или строку, и избегают любых неожиданных побочных эффектов сравнения.
Например, в запросе MongoDB find()
строка "1"
не будет соответствовать числовому значению 1
или логическому значению true
. Если вы хотите сохранить логические значения, определенно используйте булевский тип.
Сравнивая размер BSON (в байтах) в оболочке mongo
для полноты:
// 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()
является представлением значения поля.