2014-01-14 48 views
3

我目前正在開發使用Couchbase作爲數據庫管理器的網站。 在我的數據中,我有擁有親子關係的對象。出於邏輯的原因,這在我的應用程序中更方便(在邏輯上正確),父母將知道它的所有子項(通過包含ID數組),而不是像往常一樣在沙發上。
是否有可能使一個視圖返回,通過與父ID的查詢,該對象的所有孩子?
視圖碰撞是不可能的,因爲孩子沒有parent_id。那麼有沒有辦法在視圖裏面使用另一個視圖的功能呢?或引用自己的觀點?或者可能是一個複雜的reduce函數可以幫助,或者2個階段查看哪個首先獲得子id,然後查詢視圖,如果可能,就像couchbase內部函數。Couchbase:是否可以通過沙發創建「連接」視圖?

+0

如果您有父母關鍵字,並且該父對象具有子標識符,爲什麼不能多次獲取這些標識符? – scalabilitysolved

回答

-1

請求的功能,如您的問題所述,在Couchbase 2.2中是不可能的。正如我最近發佈在another answer上,您將需要執行多個視圖查詢來構建您的結果集(這是沒有什麼大不了的,因爲查詢在couchbase中非常快)。

另外,我應該指出,視圖不應該包含您的整個對象(它會完全擊敗視圖的目的)。因此,您的體系結構不需要任何視圖 - 您可以查詢CB作爲父對象,並且父項包含子對象的所有文檔ID。如果您需要子對象,則需要查詢它們。另外,我很高興CB不支持你要求的內容,因爲它可能會導致錯誤地使用該平臺。要脫掉你的SQL服務器帽子 - CB中的多個查詢是最佳和首選的。

1

您不能嵌套視圖,也不能引用其他視圖的原因很多。但是,您可以將文檔整理在一起,並通過使用文檔中的信息並通過單個地圖功能處理它們來模擬聯接。在我們的文檔中,您可以在此處閱讀:http://docs.couchbase.com/couchbase-manual-2.2/#solutions-for-simulating-joins

請告訴我,如果需要,我可以提供進一步說明。

此外,在您的文檔中具有雙向引用並不罕見。所以你可以把父母的ID放在子文檔中。當然,如果這種關係發生變化,你也必須更新它們。此外,你也可以有兄弟姐妹,如果信息發生變化,增加的應用程序功能可以改變所有兄弟姐妹之間的兄弟姐妹列表。和人類一樣,孩子文件當然也可以有多個父母,你可以同時參考兩者。

當然,就像@scalabilitysolved說的那樣,如果你知道父類,你可以多次獲取子類數組,甚至不需要一個View,除非你必須通過各種JSON屬性搜索父類,並且不是關鍵本身。

相關問題