2015-06-01 11 views
5

in DB Couchbase, è possibile recuperare più documenti utilizzando il prefisso chiave come stringa di query e restituisce tutti i valori-chiave che hanno la chiave che inizia con il prefisso chiave fornito (tipo tipo operatore di cosa)? senza usare Views o query/indici.Couchbase - recupero di più documenti utilizzando il prefisso chiave

Sto progettando le mie chiavi il modo in cui è mostrato nella diapositiva 51 di questa presentazione http://www.slideshare.net/Couchbase/couchbase-103-data-modeling

+1

C'è un motivo per cui non vuoi usare una vista per questo? Tieni presente che puoi fare in modo che la vista o la query ti diano solo gli ID effettivi che devi recuperare, e poi li recuperi utilizzando le normali API KV –

risposta

10

Se non si desidera utilizzare una vista o una query n1ql, non c'è modo di recuperare i documenti senza conoscere la loro chiavi esatte. Cioè, puoi solo recuperare le tue chiavi basate su prefissi se hai un modo per generare in anticipo le possibili chiavi sul lato client, ad es. Utente-1, Utente-2 ... Utente-n.

È possibile, tuttavia, eseguire il tipo di query prefisso di cui si sta parlando in n1ql senza creare indici aggiuntivi, poiché con n1ql si avrà già un indice primario su tutte le chiavi del documento. Quindi puoi fare qualcosa come "SELECT META(myBucket).id FROM myBucket WHERE META(myBucket).id LIKE "prefix%";

+0

Sto bene con un N1QL in più! È un trucco molto utile :) Grazie. Penso che preferirei usare un N1QL in più invece di mantenere l'array di riferimento di documenti figli nell'utente genitore: id {} oggetto, che richiederebbe di essere aggiornato su ogni inserimento/cancellazione di child. cosa ne pensi? –

+1

Dipende da quali sono i requisiti di prestazione. L'uso di un documento di riferimento per ottenere gli ID dei documenti figli renderà più rapido il recupero. Tuttavia, il mantenimento di ciò che è essenzialmente un indice manuale sarà molto più lavoro di sviluppo. Direi che se le prestazioni sono abbastanza buone, usa l'approccio più semplice, vale a dire n1ql in questo caso. –