2016-08-26 5 views
0

ich ein Mungo-Schema wie folgt aussehen:Mongoose mit Paßgenauigkeitsbedingung für verschachtelte Dokument füllen

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" } 
}; 

Ich brauche Produkte zu filtern, basierend auf Produkt-Kategorie und adress Stadt. Ruft nur die Produkte ab, die zu einem bestimmten Standort (Stadt im Adressschema) und einer bestimmten Kategorie gehören.

habe ich versucht, den folgenden Code:

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

}) 

Dies alles liefert die Produkte, bei denen Kategorie Streichhölzer sondern überall dort, wo der Standort Filter nicht-zufrieden ist es ein Geschäft mit null und kehrt Speicher zurück, wo Standortfilter erfüllt ist.

Antwort

0

Sie können dies versuchen:

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

ein leeres Array zurück ...... denn während tun „finden()“, es noch nicht besiedelt ist ... so es tut ein Geschäft haben abfragen auf die Adresse –

+0

Aber noch sollte es übereinstimmendes Element zurückgeben. Lass mich nochmal nachsehen. –

Verwandte Themen