sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $slice (inbäddad array-sökning)

Så jag ska säga att du bör byta schema för att lämna kommentarer som separata dokument eftersom detta är en obunden array och det kommer att göra dina frågor mer effektiva. Jag ska förklara det.

När du lägger till inbäddade dokument i en array som inte har en fast storlek kommer mongoDB potentiellt behöva flytta runt dokumentet när det växer, ändra utfyllnadsfaktorn och orsaka fragmentering (utfyllnadsfaktorn är en gissning från mongodbs sida av hur stort ditt dokument kommer att bli växa, det tilldelar mer utrymme för det fallet).

Du är också begränsad till 16 MB per dokument så tänk om du får en galet populär tråd eller om du bestämmer dig för att utöka kommentarer med annan metadata är det möjligt att du bryter den barriären. Att hämta ett stort dokument är också dyrt och tidskrävande.

I allmänhet är inbäddade dokument bra om de inte är obundna arrayer. Så att föra en lista över de 10 bästa kommentarerna kommer att fungera utmärkt, men att behålla 1000+ kommentarer är dåligt.

Det finns några bra presentationer under

http://www.10gen.com/presentations /mongodb-berlin/2012/10-key-performance-indicators http://www.10gen.com/presentations/mongosv -2011/schema-design-by-example

Jag tror att det kommer mer arbete snart med schemadesign som kommer att vara mer användbart på lång sikt. Jag tror att det är det svåraste att vara ärlig. Jag vet, det tog mig ett tag att linda huvudet runt skillnaderna från relationsmodeller.




  1. Hur man sorterar, väljer och frågar underdokument i mongoose

  2. Hur man använder SCAN med alternativet MATCH i Predis

  3. Att hitta alla poster som innehåller ett givet underfält i mongodb

  4. Hur uppnår Redis den höga genomströmningen och prestandan?