2016-08-26 2 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' 

}) 

今は、このカテゴリにマッチするすべての製品を返しますが、地域フィルタが、満たされていないところはどこでも場所フィルタが成立しているところはどこでも、それがnullを返すストアと店舗を返します。

答えて

0

あなたはこの試みることができます:

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

を「)(見つける」しながら、それはまだ移入されません...ので、それが照会する店舗を持っているdoesntのため......空の配列を返します。アドレスの –

+0

しかし、それでも一致する要素を返す必要があります。もう一度チェックしてみましょう。 –

関連する問題