2013-11-27 25 views
0

Symfony2的項目與學說的MongoDB ODM:雙向引用總是牽強主義的MongoDB

我有以下文件:

用戶

referenceOne: 
    my_buddy: 
     targetDocument: Buddiness #(just an example) 
     mappedBy: from_user 
     simple: true 
    buddy_with_me: 
     targetDocument: Buddiness 
     mappedBy: to_user 
     simple: true 

Buddiness

referenceOne: 
    from_user: 
     targetDocument: User 
     simple: true 
     inversedBy: my_buddy 
    to_user: 
     targetDocument: User    
     simple: true 
     inversedBy: buddy_with_me 

在每一個身份驗證的請求我有2個額外的查詢:

db.Buddiness.find({ "from_user": ObjectId("...") }).sort([ ]).limit(1).limit(); 
db.Buddiness.find({ "to_user": ObjectId("...") }).sort([ ]).limit(1).limit(); 

我怎樣才能擺脫這些2?

回答

2

默認情況下,通常原則應該使用lazy-loading。我想你可以找到答案here

刪除mappedBy屬性。

+0

這不像解決方案那麼簡單:如果您刪除了mappedBy,那麼您也會對該值取消規範化。 現在,如果刪除映射對象,則必須記得刪除該引用。我發現更好的方法是使用referenceMany,並強制setter只有1個值 – Madarco