2012-04-04 14 views
6

Sono consapevole che tramite l'API REST, è possibile specificare il parametro 'limite' (ad esempio? Limite = 5) per limitare il numero di risultati restituiti da una determinata vista in CouchDB.Utilizzo del parametro 'limite' in CouchDB Visualizza funzione mappa

La mia domanda è se ci sia o meno un modo per farlo all'interno della funzione mappa stessa all'interno della vista ...?

+3

Potete fornire maggiori informazioni? Che cosa vuoi fare? –

risposta

5

La risposta alla tua domanda specifica è "no".

La funzione mappa viene applicata a ogni documento nel database e la funzione di riduzione, se definita, viene applicata a ogni risultato di riduzione. Pensa al pre-computing.

I parametri di query forniti nell'URL vengono applicati all'albero B + creato dalle funzioni MapReduce. Ad esempio, se si dice ?limit=5, i cinque fogli più a sinistra nell'albero vengono utilizzati come risultati. Oppure, se dici ?limit=5&descending=true, i cinque fogli più a destra nell'albero vengono utilizzati come risultati.

Tuttavia, ciò che si sta tentando di eseguire eseguendo un ?limit=5 nella funzione Mappa potrebbe essere eseguito in un modo diverso. Ad esempio, l'applicazione potrebbe includere qualcosa nei documenti che li ha fatti ottenere condizionatamente inclusi nei risultati. Oppure imporre che nell'indice siano indicati solo cinque documenti, anche se sarebbe ingombrante e, a seconda delle dimensioni del database, costoso.

Cheers.

0

Se gli UUID sono sequenziali (è possibile verificare le configurazioni per quello), si potrebbe essere in grado di sfruttare ciò di per sé per visualizzare solo i primi cinque documenti.

0

Non è possibile la funzione map. Perché la mappa affronterà ogni singolo documento e forse contemporaneamente su qualsiasi nodo separato. Non può essere a conoscenza di altro documento

Ma penso che quello che vuoi sarebbe possibile con reduce. la riduzione verrebbe eseguita dopo che la funzione mappa ha fatto tutto e ha tutti i risultati presenti. Così si potrebbe modificare il risultato da map in alcun modo

In poche parole, si potrebbe usare reduce per raggruppare le righe con la stessa chiave, allora si potrebbe ritagliare ogni gruppo di avere solo 5 risultati (in rereduce se ricordo correttamente)

Problemi correlati