2016-08-26 93 views
0

我有一個貓鼬的模式是這樣的:貓鼬與匹配條件填充嵌套文件

var Address = { 
    doorNo:String, 
    city:String, 
    state:String, 
    country:String, 
    district:String, 
    zipCode:String, 
    area:String, 
    locality:String 
}; 

var StoreSchema = { 
    name:String, 
    address:Address, 
    category:[String], 
    products:[{ type:Schema.ObjectId, ref:"Product" }], 
}; 

var ProductSchema = { 
    name:String, 
    description:String, 
    category:String, 
    subCategory:String, 
    store: { type:Schema.ObjectId, ref:"Store", childPath:"products" } 
}; 

我需要根據產品類別和地址城市來篩選產品。僅獲取屬於特定位置(城市地址模式)和特定類別的產品。

我嘗試下面的代碼:

Product 
    .find({'category':'accessories'}) 
    .populate({ 
    path: 'store', 
    match: { 'address.city': req.params.location}, 
    select:'_id' 

}) 

現在這個返回的所有產品,其中類別的比賽,但無論位置過濾器是不成立的地方位置過濾器是滿足它返回一個空返回商店的商店。

回答

0

你可以試試這個:

Product 
    .find({'category':'accessories','store.address.city': req.params.location}) 
    .populate({ 
    path: 'store', 
    select:'_id' 
    }) 
+0

返回一個空數組......因爲,在做「找到()」,它是尚未填充...所以它沒有一個商店查詢地址 –

+0

但是,還是應該返回匹配的元素。讓我再檢查一次。 –