2012-07-24 15 views
9

Ho una vista couchdb configurato con un valore di chiave di matrice, nel formato:CouchDB - Interrogazione matrice valore chiave per primo elemento chiave solo

[articleId, -timestamp] 

voglio interrogare per tutte le voci con lo stesso articolo id . Tutti i timestamp sono accettabili.

In questo momento sto utilizzando una query come questa:

?startkey=["A697CA3027682D5JSSC",-9999999999999]&endkey=["A697CA3027682D5JSSC",0] 

ma vorrei qualcosa di un po 'più semplice.

Esiste un modo semplice per eseguire il wildcard completamente del secondo elemento chiave? Quale sarebbe la sintassi più semplice per questo?

+6

Credo che tutto quello che dovete fare è '? StartKey = [ "A697CA3027682D5JSSC"] = & endkey [ "A697CA3027682D5JSSC", {}]' –

risposta

13

In primo luogo, come un commento sottolineato, v'è infatti un valore speciale {} che viene ordinato dopo alcun valore, quindi la query diventa:

startkey=["target ID"]&endkey=["target ID",{}] 

Questo è equivalente ad un match wildcard.

Come nota a margine, non è necessario invertire l'ordine nella funzione mappa emettendo un timestamp negativo, è possibile invertire l'ordine come un'opzione per l'invocazione di visualizzazione (la chiave di inizio e fine verrà scambiata).

startkey=["target ID",{}]&endkey=["target ID"]&descending=true 
+0

eccellente. Stavo cercando tutto questo, ma suppongo che la mia terminologia non fosse esatta. Grazie mille :) – Gopherkhan

+0

Dove l'hai trovato? funziona benissimo ma stavo analizzando la documentazione per l'ultima settimana e questo è il primo posto in cui ho visto il {} menzionato. – MBillau

+1

@MBillau è passato troppo tempo, quindi non ricordo più. Penso che abbia qualcosa a che fare con l'ordinamento alfabetico di '{}'. –

Problemi correlati