2017-01-09 40 views
1

我有兩個模式設置:什麼是使用貓鼬種羣的正確方法?

var ClientSchema = new Schema({ 
    name: String 
}); 
module.exports = mongoose.model('Client', ClientSchema); 

而且

var PlaceSchema = new Schema({ 
    client: {type: mongoose.Schema.Types.ObjectId, ref: 'Client'}, 
    address: String 
}); 
module.exports = mongoose.model('Place', PlaceSchema); 

,如果我得到的地點清單,我可以很容易地填充客戶端這樣的:

Place.find({}).populate('client') 

但是,如果我想獲得所有客戶和他們所有的地方的清單,我將如何查詢這個?我是否應該在返回響應之前簡單地遍歷所有客戶並在Place.find({client:client._id)之前找到它的位置?

回答

0

這個數據結構只會以一種方式工作,PlaceSchema做參考ClientSchema但ClientSchema不必PlaceSchema任何引用,該解決方案將是確定你的ClientSchema這樣:

var ClientSchema = new Schema({ 
    name: String, 
    _address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}] 
}); 

這似乎有點兒愚蠢的,但它會更容易爲你的情況

0

那麼,如果你有一些地方,他們將有自己的唯一ID,併爲客戶端連接到每個地方,你可以有一個placeId數組,每當客戶端連接到這個地方時,將一個placeId推送到這個陣列。'

var ClientSchema = new Schema({ 
    name: String, 
    _address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}] 
});` 
相關問題