Ich verwende, was für die Erstellung einer Join-View einen gemeinsamen Trick scheint zu sein: Ich weißWas ist der maximale Wert für einen zusammengesetzten CouchDB-Schlüssel?
// 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);
}
}
kann ich einen einzelnen customer
und alle damit verbundenen Order
s die folgende Abfrage verwenden zu erhalten:
?startkey=["some_customer_id"]&endkey=["some_customer_id", 2]
Aber jetzt habe ich meine Abfrage sehr eng an meinen Sichtcode gebunden. Gibt es einen Wert, den ich setzen kann, wo ich meine "2
" setzen, um deutlicher zu sagen: "Ich möchte alles gebunden an diesen Kunden"? Ich glaube, ich habe
?startkey=["some_customer_id"]&endkey=["some_customer_id", {}]
Aber ich bin nicht sicher, dass {}
ist bestimmtenach alles andere zu sortieren.
Guthaben auf cmlenz für die Join-Methode.
Eine weitere Klärung der CouchDB wiki page on collation:
Die Abfrage
startkey=["foo"]&endkey=["foo",{}]
wird mit "foo" in dem ersten Element, wie["foo","bar"]
und["foo",["bar","baz"]]
meisten Array-Schlüssel entsprechen. Allerdings wird es nicht passen["foo",{"an":"object"}]
So {}
ist spät in der Sortierreihenfolge, aber definitiv nicht letzte.
Hinweis "inclusive_end" schützt vor dem lächerlichen Fall, in dem Sie tatsächlich einen Schlüssel der Form "some_customer_id \ u0000" haben, indem Sie keine Dokumente einschließen, die dem "endkey" im Ergebnis entsprechen. – user359996