2016-03-29 23 views
1

Belgedeki iki alana dayalı olarak n1ql'deki iki belgeyi birleştirmek mümkün mü? Bunun gibi için katılır dil sorgu örneklerde, N1ql kullanıcı alanı alanına katıl

:

SELECT c, pr 
FROM purchases pu 
JOIN customer c ON KEYS pu.customerId 
NEST product pr 
ON KEYS ARRAY li.product FOR li IN pu.lineItems END 
WHERE pu.customerId = "customer1" 

Garip olan ben katılmak ya da nasıl belirtildiğine kullanılıyor c hangi özelliği söyleyemem olmasıdır.

Ben _type='Customer' bir myId niteliği sahip belgeler vardı varsayalım ve bir customerId niteliğine sahip _type='PurchaseOrder' ait belgelere olanlar katılmak istedi. Bu nasıl yapılır?

cevap

1

N1QL, ikinci bir belgenin harici birincil anahtarına başvuran bir belgeden bir ifade kullanarak JOIN'leri gerçekleştirir. Örneğinizde, JOIN on customer müşterinin harici birincil anahtarını kullanıyor c. Couchbase'in bir belge veritabanını bir anahtar-değer veritabanıyla birleştirdiğini unutmayın. Bu şekilde, Couchbase'deki her belgenin benzersiz bir harici anahtarı vardır. Bu harici anahtar, N1QL'in ikinci belgeye JOIN için kullandığı şeydir.

+0

Bundan başka bir şeye katılmak için bir seçenek olması planlanıyor mu? – FrobberOfBits

+0

Evet, ancak sonraki sürümde değil. – geraldss

İlgili konular