Jak skutecznie wykonywać „różne” z wieloma kluczami?

Na przykład istnieje taka kolekcja:

{rynek: „SH”, kod: „000001”, data: „2012-01-01”, cena: 1000}
{rynek: „SZ”, kod: „000001”, data: „2012-01-01”, cena: 1000}
{rynek: „SH”, kod: „000001”, data: „2012-01-02”, cena: 1000}
{rynek: „SZ”, kod: „000001”, data: „2012-01-02”, cena: 1000}
{rynek: „SH”, kod: „000002”, data: „2012-01-03”, cena: 1000}
...

Ta kolekcja zawiera dziesiątki milionów dokumentów.

Chcę nazwać odrębny dwoma kluczami:

collection.distinct('market', 'code');

i uzyskaj wynik:

[{rynek: „SH”, kod: „000001”}, {rynek: „SZ”, kod: „000001”}, {rynek: „SH”, kod: „000002”}]

Jako, że rodzime polecenie odrębne akceptuje tylko jeden klucz, staram się go zaimplementować przy użyciu funkcji zmniejszania mapy. Zmniejszenie mapy jest jednak zbyt powolne, aby odróżnić ją od natywnych. W moim jednoznacznym teście, zmniejsz mapowanie spędzaj około dziesięć razy dłużej niż natywny odrębny.
Czy istnieje skuteczny sposób na implementację różnych funkcji?

questionAnswers(1)

yourAnswerToTheQuestion