MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Извличане, моделиране и промяна на модела на данни с mongoid/mongodb

Правите две неща:

  • Филтрирайте потребителите с db заявка вместо филтриране в приложението
  • извличане само на полета, от които се нуждаете, от db, а не на целите потребителски обекти (ако приемем, че имате някои други неща в потребител, които сте пропуснали тук за краткост)

    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:Вероятно не искате да използвате map на User.all , това ще изисква много памет, ако имате много тежки потребителски документи. Освен това не използвате картографираните потребители, а вместо това събирате резултати в competitors масив себе си, така че each трябва да работи добре.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. премахване на обект от вложен масив от обекти mongodb

  2. Дешифрирайте грешка при свързване към екземпляр на mongo, хостван на <project>.meteor.com

  3. Дизайн на MongoDB документ за коментари (и техните коментари в отговор)

  4. Най-добри практики за ефективно съхраняване на md5 хешове в MongoDB

  5. Настройката на Mongo docker е повредена след рестартиране (unifi контролер на raspberry pi)