sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur ska jag lagra booleska värden i mongodb?

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.



  1. MongoDB $or fråga

  2. 3 sätt att dölja ett index från frågeplanen i MongoDB

  3. Få värden med jedis pipeline

  4. Hur tillåter man nollfält när man uppdaterar i Mongoose?