Boolean
является родным типом поля в BSON (формат хранения на стороне сервера MongoDB, также известный как «Binary JSON»). Булевы используют меньше памяти, чем целое число или строку, и избегают любых неожиданных побочных эффектов сравнения.
Например, в запросе find()
MongoDB строка "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()
является представлением значения поля.
Почему вы используете _anything_, кроме логического ('true' /' false')? –
wellllllllllllllllllll. не говоря о том, что это трюк или удовольствие. вы можете рассматривать значение null или undefined как -1, противоположное true/false. следовательно, число. но можно найти неопределенные значения, используя $ существует в mongodb. так что никакого преимущества grt. за исключением того, что вы можете индексировать undefined .... –