Det anbefales, hvis det er muligt for brugssagen, hvilket det normalt ikke er. Tidsseriedata er en bemærkelsesværdig undtagelse. Det gælder ikke rigtigt med $addToSet
og $push
fordi de har en tendens til at øge størrelsen af dokumentet ved at vokse en matrix.
Hold op. Er du sikker på, at du vil have konstant voksende arrays med titusindvis af poster? Skal du forespørge og have specifikke poster tilbage? Vil du indeksere nogle felter i array-indgangene? Du vil sandsynligvis genoverveje din dokumentstruktur. Måske vil du have hver data
indgang til at være et separat dokument med felter som market
, type
, createdAt
replikeres i hver? Du ville ikke bekymre dig om dokumentflytninger.
Hvorfor vil arrayet vokse til 75.000 poster? Kan du lave færre poster pr. dokument? Er dette tidsseriedata a> ? Det er fantastisk at være i stand til at forhåndstildele dokumenter og lave opdateringer på stedet med mmap-lagringsmotoren, men det er ikke muligt for alle brugssager, og det er ikke et krav for, at MongoDB skal fungere godt.
Nej, det er ikke rigtig nyttigt. Dokumentstørrelsen vil blive beregnet ud fra BSON-størrelsen af null-værdierne i arrayet, så når du erstatter null
med en anden type vil størrelsen øges, og du vil alligevel få dokumentomskrivninger. Du skal forudallokere arrayet med objekter med alle felter sat til en standardværdi for dens type, f.eks.
{
"date" : ISODate("1970-01-01T00:00:00Z") // use a date type instead of a string date
"price" : 0,
"amount" : 0,
"tid" : "000000", // assuming 7 character code - strings icky for default preallocation
"type" : "none" // assuming it's "buy" or "sell", want a default as long as longest real values
}