2010-04-09 51 views
2

我一直在關注Rob Conery的Linq for MongoDB,並且遇到了一個問題。在這個例子中,他展示瞭如何輕鬆地嵌套一個子對象。對於我目前的實驗,我有以下結構。MongoDB中的子對象

class Content 
{ 
    ... 
    Profile Profile { get; set; } 
} 

class Profile 
{ 
    ... 
} 

這在查看內容項目時效果很好。我現在面臨的困境是如果我想將配置文件視爲原子對象。就目前而言,看起來好像我無法直接查詢Profile對象,但它是隨Content結果一起打包的。如果我希望它是包容性的,但也能夠在Profile上查詢,我覺得我的第一本能是將個人檔案設置爲頂級對象,然後在Content類下創建一個類似結構的外鍵以將兩者結合在一起。

對我來說,感覺就像我正在倒退RDBMS的做法,感覺就像我最有可能違背了Mongo的精神。你會如何處理一個你需要獨立處理的對象,並且還希望作爲另一個對象的子對象?

回答

0

我已經決定將該配置文件非規範化爲僅包含不可變配置文件屬性的「較小」配置文件內容將是一個更好的解決方案。這最大限度地減少了我將要做的讀取,同時允許我查找實際的配置文件對象(如果有必要的話)以收集關於配置文件的更深數據。

0

沒有過多地跟隨Rob的東西,只是在這裏大聲思考。難道你沒有Content對象可以獲取的配置文件提供程序對象,並且有一些方法可以獲取正在查找的配置文件的實例。

這將有利於您正在尋找的父母/子女關係的構圖。

再次,在這裏大聲思考,但我會讓內容對象具有IProfileProvider類型的依賴關係,並且我會在需要時將該提供者注入內容對象。這將允許我撰寫具有配置文件類型的內容類型,但不明確地具有父/子關係