2017-04-21 237 views
0

找我有兩個模式:貓鼬的對象ID參考

let adSchema = mongoose.Schema (
    { 
     author: {type: ObjectId, ref: 'User'}, 
     title: {type: String, required: true }, 
     town: {type: ObjectId, ref: 'Town', required: true}, 
    } 
); 

,鎮架構:

let townSchema = mongoose.Schema (
    { 
     name: {type: String, required:true, unique:true}, 
     ads: [{type: ObjectId, ref: 'Ad'}] 
    } 
); 

我需要查詢發現通過town.name 我如何能做到這一點的所有廣告?

+0

1)你可以用它做的第一輕鬆查詢上townSchema與鎮名'find'和他們獲得的所有廣告IDS然後adSchema查詢。 2)您可以使用自動填充插件'https:// github.com/mongodb-js/mongoose-autopopulate'。 –

回答

0

您可以通過名稱請求城鎮並使用貓鼬填充方法填充城鎮對象中的廣告數組。

你可以找到貓鼬文檔中的例子:

http://mongoosejs.com/docs/populate.html

+0

是的,但我也有廣告模式和作者的類別參考,我也需要列出他們。但我不能填充它們,如果我按城鎮名稱搜索。 –

+0

啊,好的,我沒有注意到它是一個參考。考慮到mongo它是一個面向文檔的數據庫,您可以將城市模式中的廣告模式嵌入到城鎮模式中,如果這種關係是少數的話。另一種選擇是將城鎮名稱作爲廣告的元數據。你可以在這裏看到mongo模式設計的基本規則:https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1 – catacs