1
在我們的couchbase db中,我們有一個桶,其中有相對較大的對象。這些對象內部還有其他對象,讓我們說人。這應該是一個數組,但是因爲某些原因,我們不得不將其創建爲對象的對象,這是它的樣子:使用couchbase獲取子文檔N1QL
{
"companyName": "company name",
"companyid": "11111-GUID-11111",
"people": {
"22222-GUID-22222": {
"peopleid": "22222-GUID-22222",
"name": "name1"
},
"33333-GUID-33333": {
"peopleid": "33333-GUID-33333",
"name": "name2"
},
"44444-GUID-44444": {
"peopleid": "44444-GUID-44444",
"name": "name3"
}
}
}
採用這種結構我可以得到一個「人」創建查詢反對使用類似的查詢如下:
SELECT c.*
FROM companies c
WHERE ANY v IN OBJECT_VALUES(c.people) SATISFIES v.peopleid = "22222-GUID-22222" END;
具有這種結構的問題是,數據庫與整個公司目標響應,但我只需要滿足條件的「人」的對象,我不需要使用除"22222-GUID-22222"
以外的其他ID的人。
有沒有什麼辦法可以實現這個使用couchbase?
雖然答案總是值得讚賞的,但它確實有助於提供一些關於**代碼如何解決手頭問題的額外信息。這樣做可以幫助那些具有類似(但不完全相同)問題的人。不是每個人都可能熟悉你的確切編碼邏輯,但可以理解你的一般*方法*或*概念*。爲了幫助改進您的答案,請提供一些[**環境**](https://meta.stackexchange.com/questions/114762),並參閱關於[**寫出優秀答案**]的幫助文章( http://stackoverflow.com/help/how-to-answer)關於如何讓你的答案計數的一些提示:) –
vsr,謝謝你的幫助!它幾乎解決了我的問題。現在唯一的問題是,我不得不提出查詢,我們得說:我必須查詢年齡大於50歲的每個人。使用您的查詢,我只能得到每個文檔的第一個匹配。如果您也可以對此做出迴應,那麼答案將會完整,我可以上傳並接受您的答案。再次感謝。 –
我能找到解決方案。我必須使用'ARRAY'語句而不是'FIRST'。我在couchbase上比較新,所以花了一些時間。所以我會接受答案。還有一個問題,有沒有什麼辦法只用一個條件來實現呢?我必須動態構建這些查詢。如果這會降低性能,那麼我對這個解決方案就行了。 –