voglio eseguire questa istruzione SQL su MongoDB:Selezionare distinta più di un campo usando la mappa di MongoDB ridurre
SELECT DISTINCT book,author from library
Finora MongoDB di DISTINCT supporta un solo campo alla volta. Per più di un campo, dobbiamo usare il comando GROUP o map-reduce.
Googled un modo per utilizzare il comando GROUP:
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: { }
});
Tuttavia questo approccio supporta solo fino a 10.000 chiavi. Qualcuno sa come usare la mappa ridurre per risolvere questo problema?
Thanks a lot. Funziona bene. ma ho ancora difficoltà a trovare la funzione di '{exists: 1}'. nella mia comprensione è una specie di identificatore per ogni valore unico. ma lo trovo ancora strano –
In genere il valore è più complesso e ha diversi campi. Potresti semplificare questo per emettere solo un valore 1, ma '{exists: 1}' è più intuitivo e renderà più facile quando vorrà aggiungere più campi ad esso in seguito. –