Por ejemplo, hay una colección como esta:
¿Cómo realizar eficientemente "distinct" con múltiples claves?
{mercado: 'SH', código: '000001', fecha: '2012-01-01', precio: 1000} {
mercado : 'SZ', código: '000001', fecha: '2012-01-01', precio: 1000}
{mercado: 'SH', código: '000001', fecha: '2012-01-02', precio: 1000}
{mercado: 'SZ', código: '000001', fecha: '2012-01-02', precio: 1000}
{mercado: 'SH', código: '000002', fecha: '2012-01-03', precio: 1000}
...
Esta colección contiene decenas de millones de documentos.
Quiero llamar distinta con dos claves:
collection.distinct('market', 'code');
y obtener resultado:
[{mercado: 'SH', código: '000001'}, {mercado: 'SZ', código: '000001'}, { mercado: 'SH', código: '000002'}]
Como nativa de comandos distinta aceptar sólo una tecla, trato de poner en práctica usando map-reduce. Pero map-reduce es demasiado lento para ser nativo distinto. En mi prueba única de una tecla, map-reduce gastar unas diez veces más que el native distinct.
¿Existe una forma eficiente de implementar varios señuelos distintos?