MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:Czy należy wstępnie przydzielić dokument, jeśli używasz $addToSet lub $push?

Jest to zalecane, jeśli jest to wykonalne dla przypadku użycia, co zwykle nie jest możliwe. Godnym uwagi wyjątkiem są dane szeregów czasowych. Tak naprawdę nie ma zastosowania z $addToSet i $push ponieważ mają tendencję do zwiększania rozmiaru dokumentu poprzez powiększanie tablicy.

Zatrzymaj się. Czy na pewno chcesz stale rosnących tablic zawierających dziesiątki tysięcy wpisów? Czy zamierzasz wysłać zapytanie, aby odzyskać określone wpisy? Czy zamierzasz indeksować jakieś pola we wpisach tablicy? Prawdopodobnie chcesz przemyśleć strukturę swojego dokumentu. Może chcesz każdy data wpis ma być osobnym dokumentem z polami takimi jak market , type , createdAt replikowane w każdym? Nie martw się o przenoszenie dokumentów.

Dlaczego tablica rozrośnie się do 75 tys. wpisów? Czy możesz zrobić mniej wpisów na dokument? Czy to dane szeregów czasowych ? Wspaniale jest móc wstępnie przydzielać dokumenty i przeprowadzać aktualizacje w miejscu za pomocą silnika pamięci masowej mmap, ale nie jest to wykonalne dla każdego przypadku użycia i nie jest wymagane, aby MongoDB działała dobrze.

Nie, to nie jest pomocne. Rozmiar dokumentu zostanie obliczony na podstawie rozmiaru BSON wartości null w tablicy, więc po zastąpieniu null przy innym typie rozmiar wzrośnie, a i tak dostaniesz przepisanie dokumentu. Będziesz musiał wstępnie przydzielić tablicę z obiektami ze wszystkimi polami ustawionymi na domyślną wartość dla jej typu, np.

{
    "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. mongodb oraz uwierzytelnianie i paszport w node.js

  2. policz mongodb w php

  3. Wdróż MongoDB w wirtualnej chmurze prywatnej Amazon (VPC)

  4. Jak zaimportować format pliku .bson na mongodb

  5. Meteor:znajdowanie obiektu z kolekcji według _id