sql >> Database teknologi >  >> NoSQL >> MongoDB

Udtræk, modellering og ændring af datamodel, med mongoid/mongodb

Du gør to ting:

  • Filtrer brugerne med db-forespørgsel i stedet for at filtrere i applikationen
  • hent kun felter, du har brug for fra db, i stedet for hele brugerobjekterne (forudsat at du har nogle andre ting i bruger, som du har udeladt her for kortheds skyld)

    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:Du ønsker sandsynligvis ikke at bruge mapUser.all , vil det kræve meget hukommelse, hvis du har mange tunge brugerdokumenter. Du bruger heller ikke de kortlagte brugere, men samler i stedet resultater i competitors array dig selv, så each burde fungere fint.




  1. Omdøb felt af kompleks type, der er placeret i array

  2. Mongodb Dokument til Scala sagsklasse

  3. MongoDB NumberLong/$numberLong problem under konvertering tilbage til Java Object

  4. Hvordan opretter jeg forbindelse til mongodb med node.js (og godkender)?