2013-02-26 11 views
9

Mam kod, jak pokazano poniżej. W kolekcji moich słów kluczowych w Mongo znajduje się około 60 tys. Wpisów. Naprawdę chcę tylko top 25, więc próbuję ustawić limit. Używam tego samego zapytania, aby wydrukować moją liczbę wyników. Z jakiegoś powodu ograniczenie nie działa, ponieważ mój komunikat logu mówi 60K lub więcej.Ograniczyć liczbę wyników w Meteorcie po stronie serwera?

Czy tego rodzaju rzeczy nie są możliwe? Mogę ustawić limit po stronie klienta, który działa, ale myślałem, że spróbuję ograniczyć liczbę rzeczy na serwerze, dzięki czemu mniej danych zostanie wysłanych.

Kilka bity dodatkowe informacje:

  • Używam własnej bazy danych Mongo, a nie jeden dostarczone przez meteor; wskazując na niego ze zmienną env
  • wersji 0.5.7

Każda pomoc będzie mile widziana.

if (Meteor.isServer) { 
    Meteor.startup(function() { 
    console.log('server startup'); 

    Meteor.publish("keyword_hits", function() { 
     console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).count()); 
     return Keywords.find({}, {sort: {count:-1}, limit:25}); 
    }); 
}); 
+4

Ah Myślę, że znalazłem to, sam używałem pola _id. Zmieniłem kod, aby użyć domyślnego i wszystko wydaje się działać teraz. Będę pamiętać, aby zostawić je w spokoju podczas używania meteoru. –

+6

Witaj Eric, Czy mógłbyś wkleić rozwiązanie jako odpowiedź i zamknąć pytanie? Czy nadal potrzebujesz pomocy? – cmather

+0

Jedna rzecz, którą zauważam, to sortowanie w instrukcji console.log. Nie ma powodu do sortowania, jeśli tylko robisz liczyć. –

Odpowiedz

16

Dzięki API Mongo, że pochodzi z Meteor, .count() nie bierze pod uwagę Limits lub Skips więc co widzisz będzie zawsze maksymalną ilość rzeczy w swojej kolekcji.

Jeśli nie

Meteor.publish("keyword_hits", function() { 
     console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).fetch().length); 
     return Keywords.find({}, {sort: {count:-1}, limit:25}); 
}); 

Więc zamiast dzwonić .count() i zamiast zadzwonić, .fetch() która zwraca wybranych 25 wpisy ze swojej kolekcji, a następnie zadzwonić .length na nim widać prawidłowa liczba wpisów były zwrócony.

Właściwie otworzyłem problem dotyczący .count(), ponieważ w normalnym Mongo można zrobić: .count({'applySkipLimit': true});, który będzie uwzględniał twoje pominięcia i twoje granice.

W każdym razie, to twój problem.

Powiązane problemy