Препоръчва се, ако е осъществимо за случая на употреба, което обикновено не е така. Данните от времеви редове са забележително изключение. Това наистина не се прилага с $addToSet
и $push
защото те са склонни да увеличат размера на документа чрез увеличаване на масив.
Спри се. Сигурни ли сте, че искате непрекъснато нарастващи масиви с десетки хиляди записи? Ще питате ли, за да искате конкретни записи обратно? Ще индексирате ли някакви полета в записите в масива? Вероятно искате да преосмислите структурата на вашия документ. Може би искате всеки data
записът да бъде отделен документ с полета като market
, type
, createdAt
репликиран във всяка? Няма да се тревожите за преместване на документи.
Защо масивът ще нарасне до 75K записа? Можете ли да правите по-малко записи на документ? Това данни от времеви серии ли са ? Страхотно е да можете предварително да разпределяте документи и да извършвате актуализации на място с машината за съхранение mmap, но не е осъществимо за всеки случай на употреба и не е изискване MongoDB да работи добре.
Не, това не е особено полезно. Размерът на документа ще бъде изчислен въз основа на размера на BSON на нулевите стойности в масива, така че когато замените null
с друг тип размерът ще се увеличи и така или иначе ще получите пренаписване на документа. Ще трябва предварително да разпределите масива с обекти с всички полета, зададени на стойност по подразбиране за неговия тип, напр.
{
"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
}