我有一个像这样的猫鼬模式:
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 :(得分:0)
你可以试试这个:
Product
.find({'category':'accessories','store.address.city': req.params.location})
.populate({
path: 'store',
select:'_id'
})
答案 1 :(得分:0)
在Mongoose 5.2.7中,语法match: { 'x.y': 'something' }
很有魅力
答案 2 :(得分:0)
也许您可以尝试一下,它对我有用。
Product
.find({'category':'accessories'})
.populate(path: 'store',
model: 'Store',
match:{address.city:{$eq:"YOUR_CITY"}}}).exec(function(err, res){})