У меня есть мангуста схему так:Mongoose заселить с условием соответствия для вложенного документа
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'
})
Теперь это возвращает все продукты, где категории ссылок, но везде, где фильтр место не довольная возвращается в магазин с нулевым и возвращает магазин, где расположение фильтра выполняется.
возвращает пустой массив ...... потому что при этом «найти()», это еще не заселена ... поэтому он не имеет магазин для запроса по адресу –
Но все же он должен возвращать согласованный элемент. Позвольте мне еще раз проверить. –