2017-02-09 23 views
1

需要我使用Node js和Mongoose爲我的MongoDB構建的大型社交網絡提供幫助。來自人口稠密模型的貓鼬隨機和混合響應

我的想法是混合來自模型響應,表現出從類一個後該用戶之後,然後顯示其他的類別,用戶也被下面的帖子,然後顯示一個從組(私人類別)。同樣的3 + 1(3類+ 1組)帖子,但用戶可以關注很多類別,並且有很多組。

有什麼我可以用來從RANDOM類別+組獲得帖子? 我想在這裏沒有用Math

寫隨機邏輯發明了車輪所以這是我簡單的架構:

var userSchema = new Schema({ 
    groups: [{type: Schema.Types.ObjectId, ref: 'Group'}], 
    followingCategories: [{type: Schema.Types.ObjectId, ref: 'Category'}] 
}); 

var postSchema = new Schema({ 
    user: {type: Schema.Types.ObjectId, ref: 'User'}, 
    category: {type: Schema.Types.ObjectId, ref: 'Category'} 
}); 

var categorySchema = new Schema({ 
    user: {type: Schema.Types.ObjectId, ref: 'User'}, 
    group: {type: Schema.Types.ObjectId, ref: 'Group'}, 
    posts: [{type: Schema.Types.ObjectId, ref: 'Post'}] 
}); 

var groupSchema = new Schema({ 
    users: [{type: Schema.Types.ObjectId, ref: 'User'}], 
    categories: [{type: Schema.Types.ObjectId, ref: 'category'}] 
}); 

,它必須通過用戶模型像可用:

User.findById(..., function(err, user){ 
    //logic that gets user posts from random categories and groups 
}); 

請注意以下幾點:

  1. 它必須要快(期待百萬張貼

  2. 它採用limit(10)skip(int)的API延遲加載

  3. 類別和組是隨機的,但帖子都是爲了{created_at: desc}

  4. 用戶可以關注很多categories,可以在很多groups

+1

請澄清一下,你的問題是什麼? –

+1

@DianaHolland多重關係持有者的先進隨機函數是他正在尋找的東西,如果我理解得很好 –

+0

@MladenJanjetovic爲什麼在第一次編輯時從OP中刪除了一些代碼?代碼可能與其他人有關... –

回答

0

如果我完全理解你的問題,這有點不清楚,你正在尋找聚合和$sample算子。它隨機選擇文檔表單集合。

+0

你可以給我舉個例子嗎?你如何做$ sample,因爲我沒有想法...就像@MladenJanjetovic所說:我認爲這裏的問題實際上是「我如何從我關注的組中獲取所有帖子,隨後類別,並關注用戶?「 – maki10