MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB:Трябва ли да разпределите предварително документ, ако използвате $addToSet или $push?

Препоръчва се, ако е осъществимо за случая на употреба, което обикновено не е така. Данните от времеви редове са забележително изключение. Това наистина не се прилага с $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
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвам променлива mongoose заявка?

  2. В Morphia как мога да актуализирам един вграден обект в ArrayList

  3. Използването на $exists в MongoDB израз

  4. Как да получите максимална и минимална стойност в MongoDB въз основа на конкретен ключ?

  5. Може ли geoNear в MongoDB да върне подмножество от полета в документ?