sql >> Database >  >> NoSQL >> MongoDB

Bereikondersteuning over tijdgebonden analyses

Laten we een voor een naar uw vraag gaan:

Kijken naar prestatiestatistieken van slechts een enkele uitvoering is echt niet hoe het werkt. Je moet het gemiddelde nemen over verschillende uitvoeringen voordat je besluit, omdat er verschillende factoren in het spel zijn. Dat gezegd hebbende, MongoDB slaat de meest gebruikte documenten in het geheugen op en houdt het daar, tenzij het geheugen moet vrijmaken voor een ander document. Dus als een zoekopdracht toegang heeft tot documenten die al in het cachegeheugen van een eerdere zoekopdracht zijn opgeslagen, zou het sneller moeten zijn.

Ook in MongoDB gebruikt aggregatie indexen, indien aanwezig, alleen aan het begin. Bijvoorbeeld $match en $sort fasen kunnen indexen gebruiken. In jouw geval $match is de eerste pijplijnfase, dus dat is een overwinning.

In MongoDB worden gegevens opgeslagen in BSON , dus datums zijn in feite getallen als ze worden vergeleken. Er is dus geen verschil.

Hoewel ik het niet heb getest, betwijfel ik echt of de time_bucket-benadering een snellere respons zal geven. Sinds created_at altijd toeneemt, wordt de index in dit geval ook aan het einde toegevoegd zonder de time_bucket. Bovendien zal de indexgrootte relatief groot zijn wanneer deze op een array wordt gemaakt dan op een eenvoudig datumveld. Zal dat niet het probleem veroorzaken om de index in RAM te passen?

Het gebruik van een time_bucket is logisch wanneer u een functie in het datumveld gebruikt voordat u gaat matchen. Als u alleen het jaar uit het datumveld haalt voordat u het vergelijkt, wordt de bestaande index op de datum onbruikbaar.

Het is altijd beter om je parameters te casten zodat ze overeenkomen met het datatype in de database in plaats van andersom.

Ja het is mogelijk. Als het $and . is , je specificeert gewoon al je filters gescheiden door komma's in de $match fase. Als het $of . is gebruik de $or exploitant.

Als je twee $macth fasen één voor één MongoDB combineert het tot één . U hoeft zich dus geen zorgen te maken over het toevoegen van resultaten van meerdere wedstrijdfasen.

Nu uw Optimalisatie Punten

Ja, gedekte zoekopdrachten zijn veel sneller.

Als de grootte van documenten wordt verkleind in de $group fase door gebruik van $project , dan is het waar.

Het is niet per se waar, maar het is over het algemeen wel het geval. U kunt dit antwoord controleren .




  1. mongodb hoe te vragen met de nand-operator?

  2. Mongoose - e-mailsyntaxis valideren

  3. Rspec-tests mislukken willekeurig bij het analyseren van ActiveRecord-objecten die zijn gegenereerd door Mongoid-gebeurtenissen

  4. Het volgende en vorige item van het huidige ophalen met Mongoose