sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:Ska du förtilldela ett dokument om du använder $addToSet eller $push?

Det rekommenderas om det är möjligt för användningsfallet, vilket det vanligtvis inte är. Tidsseriedata är ett anmärkningsvärt undantag. Det gäller inte riktigt med $addToSet och $push eftersom de tenderar att öka storleken på dokumentet genom att utöka en array.

Sluta. Är du säker på att du vill ha ständigt växande arrayer med tiotusentals poster? Kommer du att fråga och vill ha tillbaka specifika poster? Kommer du att indexera några fält i arrayposterna? Du vill förmodligen ompröva din dokumentstruktur. Kanske vill du ha varje data posten ska vara ett separat dokument med fält som market , type , createdAt replikeras i varje? Du skulle inte oroa dig för dokumentflyttningar.

Varför kommer arrayen att växa till 75 000 poster? Kan du göra färre poster per dokument? Är detta tidsseriedata a> ? Det är fantastiskt att kunna förallokera dokument och göra uppdateringar på plats med mmap-lagringsmotorn, men det är inte genomförbart för alla användningsfall och det är inte ett krav för att MongoDB ska fungera bra.

Nej, det här är inte riktigt användbart. Dokumentstorleken kommer att beräknas baserat på BSON-storleken för null-värdena i arrayen, så när du ersätter null med en annan typ kommer storleken att öka och du kommer att få dokument omskrivningar ändå. Du skulle behöva förallokera arrayen med objekt med alla fält inställda på ett standardvärde för dess typ, t.ex.

{
    "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. Filtrera underdokumentarray samtidigt som överordnad data returneras om den är tom

  2. rekommenderat sätt att installera mongodb på elastisk bönstjälk

  3. mongodb aggregeringsramverk - generera _id från funktion

  4. MongoDB - Många-till-många-relation?