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?