Quiero ejecutar esta instrucción SQL en MongoDB:Seleccionar distinta más de un campo en el mapa de MongoDB reducir
SELECT DISTINCT book,author from library
Hasta ahora MongoDB de DISTINCT sólo admite un campo a la vez. Para más de un campo, tenemos que usar el comando GROUP o map-reduce.
He buscado en Google una manera de utilizar el comando GRUPO:
db.library.group({
key: {book:1, author:1},
reduce: function(obj, prev) { if (!obj.hasOwnProperty("key")) {
prev.book = obj.book;
prev.author = obj.author;
}},
initial: { }
});
Sin embargo, este enfoque sólo es compatible con hasta 10.000 llaves. ¿Alguien sabe cómo usar map reduce para resolver este problema?
muchas gracias. funciona bien. pero todavía tengo dificultades para encontrar la función de '{exists: 1}'. en mi entender, es una especie de identificador para cada valor único. pero todavía lo encuentro extraño. –
Normalmente, el valor es más complejo y tiene varios campos. Puede simplificar esto para simplemente emitir un valor 1 pero '{exists: 1}' es más fácil de entender y lo hará más fácil cuando quiera agregarle más campos más adelante. –