sql >> Database >  >> NoSQL >> MongoDB

Gegevensmodel extraheren, modelleren en wijzigen, met mongoid/mongodb

Je doet twee dingen:

  • Filter de gebruikers met db-query in plaats van filteren in applicatie
  • haal alleen velden op die je nodig hebt uit db, in plaats van de hele gebruikersobjecten (ervan uitgaande dat je wat andere dingen in de gebruiker hebt, die je hier voor de beknoptheid hebt weggelaten)

    Competitor = Struct.new(:html_url, :description, :user)
    competitors = []
    User.where('watchlists.tags_array' => %w[ruby web framework]).
        only(:nickname, :watchlists).each do |u|
      u.watchlists.where(:tags_array => %w[ruby web framework]).each do |wl|
        competitors << Competitor.new(wl.html_url, wl.description, u.nickname)
      end
    end
    

PS:Waarschijnlijk wil je map niet gebruiken op User.all , het vereist veel geheugen als u veel documenten voor zware gebruikers hebt. U gebruikt ook niet de toegewezen gebruikers, maar verzamelt in plaats daarvan resultaten in de competitors array zelf, dus each zou prima moeten werken.




  1. Redis Object Cache gebruiken om uw WordPress-installatie te versnellen

  2. Een ISODate maken voor MongoDB met PHP

  3. MongoDB verwerkt geen aggregatie met allowDiskUsage:True

  4. MongoDB SSL met zelfondertekende certificaten in C#