我试着按价格和范围过滤商品,但由于某些原因,过滤时只有最大值起作用,最小值被忽略了.
我的MongoSchema:
const ProductSchema = new mongoose.Schema({
...
variants: [
{
discount: {
state: { type: Boolean, required: true },
percent: { type: String, required: true },
},
price: { type: Number, required: true },
...
},
],
});
My Search Via Find方法带有过滤器传递
export const getProducts = (filter: any) => ProductModel.find(filter);
我的过滤功能:
const priceArray = (price as string).split("-");
const priceFilter = { 'variants.price': { $gte: 1001, $lte: 10000 }};
if (categories !== "all") {
const categoriesArray = (categories as string).split(",");
categoriesFilter = { categoryID: { $in: categoriesArray } };
}
const query = {
...categoriesFilter,
...priceFilter,
}
const products = await getProducts(query)
.sort({ _id: sort === "asc" ? 1 : -1 })
.skip((Number(page) - 1) * Number(limit))
.limit(Number(limit))
.populate([
"categoryID",
"variants.ingredients.ingredient.id",
"variants.ingredients.ingredient.variantID",
])
.exec();
这段代码正确地按类别过滤,也按价格过滤(但如上所述,它不考虑最小值,而只按最大值过滤).
这可能是什么问题?