2013-04-15 82 views
2

我的應用程序有三個集合MongoDB中的用戶,通道和源在貓鼬中獲取參考集合

用戶可以註冊通道。所以Channel將擁有已註冊該頻道的用戶的參考ID。

頻道有多個Feed。 Feed文件具有參考ID到頻道。

我想根據他訂閱的頻道檢索用戶訂閱源。 我如何在Mongoose中實現這一點?

回答

5

您可以使用ObjectId模式類型來引用其他集合中的文檔。然後,當您查詢父文檔時,您可以使用populate來填充這些文檔。例如:

var UserSchema = new Schema({ 
    // Some fields 
    channels: [{type: ObjectId, ref: 'Channel'}] 
}); 

然後,當你獲取一個用戶,你可以使用populate這樣的:

User.findById(user._id).populate('channels').exec(function(err, userWithChannels) { 
    var channels = userWithChannels.channels; 
    // Do your work 
}); 

你應該能夠扭轉的關係,如果這就是你想要的東西來代替。

+0

謝謝。我必須這樣做才能在渠道中獲取Feed? –

+0

是的,你可以在所有需要引用其他集合的模型中這樣做。 – NilsH