sql >> Databasteknik >  >> NoSQL >> MongoDB

Extrahera, modellera och ändra datamodell, med mongoid/mongodb

Du gör två saker:

  • Filtrera användarna med db-fråga istället för att filtrera i applikationen
  • hämta bara fält du behöver från db, snarare än hela användarobjekten (förutsatt att du har några andra saker i användaren, som du utelämnade här för korthetens skull)

    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 vill förmodligen inte använda mapUser.all , kommer det att kräva mycket minne om du har många tunga användardokument. Dessutom använder du inte de mappade användarna, utan samlar istället in resultat i competitors arrangera dig själv, så each borde fungera bra.




  1. Kan inte ansluta till Mongo DB via Spark

  2. Apache Hadoop Ozon Security – Autentisering

  3. Lagra bilder i en MongoDB-databas

  4. Varför säkerhetskopierar mongodump inte index?