sto usando quello che sembra essere un trucco comune per la creazione di una vista join:Qual è il valore massimo per una chiave CouchDB composta?
// a Customer has many Orders; show them together in one view:
function(doc) {
if (doc.Type == "customer") {
emit([doc._id, 0], doc);
} else if (doc.Type == "order") {
emit([doc.customer_id, 1], doc);
}
}
So che posso utilizzare la seguente query per ottenere un unico customer
e tutti i relativi Order
s:
?startkey=["some_customer_id"]&endkey=["some_customer_id", 2]
Ma ora ho legato la mia domanda molto strettamente al mio codice di vista. C'è un valore che posso mettere dove ho messo il mio "2
" per dire più chiaramente, "Voglio tutto legato a questo cliente"? Penso che ho visto
?startkey=["some_customer_id"]&endkey=["some_customer_id", {}]
Ma io non sono sicuro che sia {}
certo per ordinare dopo tutto il resto.
Credito a cmlenz per il metodo di join.
ulteriori chiarimenti alla CouchDB wiki page on collation:
La query
startkey=["foo"]&endkey=["foo",{}]
corrisponderà maggior chiavi dell'array con "foo" nel primo elemento, come["foo","bar"]
e["foo",["bar","baz"]]
. Tuttavia esso non corrisponde["foo",{"an":"object"}]
Così {}
è ritardo nell'ordinamento, ma sicuramente non ultima .
Nota le guardie "inclusive_end" contro il caso ridicolo in cui hai effettivamente una chiave del modulo "some_customer_id \ u0000", non includendo i documenti che corrispondono al "tasto finale" nel risultato. – user359996