在猫鼬中,如何根据当前结果过滤搜索结果?

Posted

技术标签:

【中文标题】在猫鼬中,如何根据当前结果过滤搜索结果?【英文标题】:In mongoose, how to filter searching results based on the current result? 【发布时间】:2021-03-08 18:48:00 【问题描述】:

我的 MERN 应用程序卡住了。我希望用户过滤产品的结果。用户应用的标准越多,结果应该越窄。例如,如果我应用过滤器男孩,则有 10 个结果。然后我正在尝试穿裤子,应该只有 5 个结果与我正在寻找的结果相匹配。但现在它不起作用。这是代码,

exports.getProductsSearchResult = (req, res, next) => 
    let query = ;
    const productCategory = req.query.category;
    const productSize = req.query.size;
    const productGender = req.query.gender
    if (productCategory !== undefined) query.category = productCategory;
    if (productGender !== undefined) query.gender = productGender;
    if (productSize !== undefined) query.size = productSize;
    console.log('query', query)
    Products.find(query).then(product => 
        // console.log(product)
        res.status(200).json(product)
    ).catch(err => 
        console.log(err)
    )


【问题讨论】:

console.log('query', query) 的输出如何?还要解释什么是“它不起作用”。哪里/什么问题? query category: 'pants', gender: 'boy', size: '1T' 如果我应用三个参数,那就是结果。 您能分享一个文档示例吗? 【参考方案1】:

谷歌搜索 *** 后,我发现了一个类似的问题并解决了我的问题。这是代码,现在,我没有看到任何错误。但是请告诉我是否有任何可以改进的地方。

exports.getProductsSearchResult = (req, res, next) => 
    let query = ;
    const productCategory = req.query.category;
    const productSize = req.query.size;
    const productGender = req.query.gender
    let payload =  "category": productCategory, "size": productSize, "gender": productGender 
    if (payload.category && payload.category.length > 0) query.category =  $in: payload.category 
    if (payload.size && payload.size.length > 0) query.size =  $in: payload.size ;
    if (payload.gender && payload.gender.length > 0) query.gender =  $in: payload.gender ;
    console.log('query', query)
    Products.find(query).then(product => 
        // console.log(product)
        res.status(201).json(product)
    ).catch(err => 
        console.log(err)
    )


【讨论】:

以上是关于在猫鼬中,如何根据当前结果过滤搜索结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用各种参数在猫鼬中进行搜索查询?

如何在猫鼬中填充模型

在猫鼬中使用权重进行全文搜索

如何仅在猫鼬中使用聚合填充嵌套在对象数组中的字段?

如何使用 $elemMatch 查找和过滤并更新数组的所有元素该元素在猫鼬中有一个特殊的日期?

如何通过填充字段在猫鼬中查找文档?