Tôi đang sử dụng những gì có vẻ là một thủ thuật thông thường để tạo một cái nhìn tham gia:Giá trị tối đa cho khóa CouchDB hợp chất là gì?
// 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);
}
}
Tôi biết tôi có thể sử dụng các truy vấn sau đây để có được một đơn customer
và tất cả liên quan Order
s:
?startkey=["some_customer_id"]&endkey=["some_customer_id", 2]
Nhưng bây giờ tôi đã gắn truy vấn của mình rất chặt chẽ với mã xem của tôi. Có một giá trị tôi có thể đặt ở nơi tôi đặt "2
" của mình để nói rõ hơn, "Tôi muốn mọi thứ được liên kết với Khách hàng này"? Tôi nghĩ rằng tôi đã nhìn thấy
?startkey=["some_customer_id"]&endkey=["some_customer_id", {}]
Nhưng tôi không chắc chắn rằng {}
là nhất định để sắp xếp sau mọi thứ khác.
Tín dụng cho cmlenz cho phương thức tham gia.
Tiếp tục làm rõ từ CouchDB wiki page on collation:
Truy vấn
startkey=["foo"]&endkey=["foo",{}]
sẽ phù hợp với hầu hết các phím mảng với "foo" trong phần tử đầu tiên, chẳng hạn như["foo","bar"]
và["foo",["bar","baz"]]
. Tuy nhiên nó sẽ không phù hợp["foo",{"an":"object"}]
Vì vậy {}
là cuối trong thứ tự sắp xếp, nhưng chắc chắn không phải cuối cùng.
Lưu ý "bao gồm_hàng" bảo vệ chống lại trường hợp vô lý nơi bạn thực sự có một khóa của biểu mẫu "some_customer_id \ u0000", bởi không bao gồm tài liệu khớp với "khóa kết thúc" trong kết quả. – user359996