sql >> Databasteknik >  >> NoSQL >> MongoDB

Store enum MongoDB

TL;DR:Strängar är förmodligen säkrare val och prestandaskillnaden bör vara försumbar. Heltal är meningsfullt för stora samlingar där enumen måste indexeras. YMMV.

Sant.

Detta är en viktig fördel med heltal enligt min mening. Men det kräver också att du kontrollerar de associerade värdena för enum ändra inte. Om du förstör det, kommer du nästan säkert att orsaka förödelse , vilket är en stor nackdel.

Om du faktiskt använder en enum-datatyp är det förmodligen något slags heltal internt, så heltalet borde kräva mindre bearbetning. I vilket fall som helst bör den omkostnaden vara försumbar.

Jag upprepar mycket av det som har sagts, men det kanske hjälper andra läsare. Sammanfattning:

  • Att blanda ihop enumvärdeskartan skapar förödelse. Föreställ dig din Declined tillstånd tolkas plötsligt som Accepted , eftersom Declined hade värdet '2' och nu är det Accepted eftersom du ordnade om listan och glömde att tilldela värden manuellt... (ryser )
  • Strängar är mer uttrycksfulla
  • Heltal tar mindre plats. Diskutrymme spelar vanligtvis ingen roll, men indexutrymme äter RAM vilket är dyrt.
  • Heltalsuppdateringar ändrar inte storleken på objektet. Strängar, om deras längder varierar mycket, kan kräva en omfördelning. Strängstoppning och stoppningsfaktor bör dock lindra detta.
  • Heltal kan vara flaggor (ännu inte sökbara (ännu), tyvärr, se SERVER-3518 )
  • Heltal kan frågas av $gt / $lt så att du effektivt kan implementera komplexa $or frågor, även om det är ett ganska svårbegripligt krav och det är inget fel med $or frågor...



  1. Hur distribuerar man en node.js med redis på kubernetes?

  2. MongoDB - Importera data

  3. MongoDB java drivrutin 3.0 kan inte fånga undantag vid autentisering

  4. hur lägger jag till ett värde till toppen av en array i mongodb?