2013-06-24 77 views
1

我有下面簡化的新聞文章和類別模式。我希望能夠返回包含給定類別名稱的所有文章。顯然,我可以通過類別ObjectId _id搜索,但我希望能夠通過category.name進行搜索。MongoDB在被引用對象中的字段查找/查找

var ArticleSchema = new Schema({ 
    title: String, 
    body: String, 
    categories: [{ 
     type: Schema.Types.ObjectId, ref: 'Category' 
    }] 
}); 

var CategorySchema = new mongoose.Schema({ 
    name: { type: String, unique: true }, 
     desc: String 
}); 

這可能嗎?是否需要在類別集合上執行搜索以返回文檔集合中的id,然後返回文章(這似乎效率低下),還是需要重新構建Schema?提前致謝。

+0

重做您的模式。你想要在類別數組中的類別名稱 - 這是不是一個好的計劃,使兩個查詢。 –

+0

所以我根本不需要類別模式?或者我可以通過名稱來引用它(如果可能的話),我仍然希望能夠列出/添加/刪除/更新類別。 – adamK

+0

你需要什麼類別集合?如果它有關於類別或它們之間的關係(或彼此)或其他信息的其他信息,則保留它 - 但爲什麼要爲類別名稱分開收集? –

回答

1

我不知道什麼樣的數據有您的類別集合,但對我來說,你有兩個選擇:

你的文章 或類別 使用自定義ID內嵌入類,所以你的類ID應該是你的類別名稱。