MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wyodrębnianie, modelowanie i zmiana modelu danych za pomocą mongoid/mongodb

Robisz dwie rzeczy:

  • Filtruj użytkowników za pomocą zapytania bazy danych zamiast filtrowania w aplikacji
  • pobieraj tylko potrzebne pola z bazy danych, a nie całe obiekty użytkownika (zakładając, że masz inne rzeczy w użytkowniku, które pominąłeś tutaj dla zwięzłości)

    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:Prawdopodobnie nie chcesz używać map na User.all , będzie wymagało dużo pamięci, jeśli masz dużo ciężkich dokumentów użytkownika. Ponadto nie używasz zmapowanych użytkowników, ale zamiast tego zbierasz wyniki u competitors tablicę samodzielnie, więc each powinien działać dobrze.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie można uzyskać pakietu Accounts-Base wskazującego właściwą bazę danych

  2. mongodb php pobiera unikalne wartości pól

  3. Jak najefektywniej zaktualizować dużą liczbę dokumentów w MongoDB?

  4. Reg:mongo db błędne wyjście zgodnie z zapytaniem

  5. Jak najlepiej przechowywać informacje o dziedziczeniu w mongodb?