使用 $facet 和 mongoDB $search 进行过滤器导航

问题描述

如何在使用过滤器时制作不随 $search 改变的品牌。

BC

输出

    const products = await Product.aggregate([
  {
    $search: {
      compound: {
        must: finalQuery,},{ $skip: pageSize * (page - 1) },{ $limit: pageSize },{
    $project: {
      _id: 1,name: 1,brand: 1,productCollection: 1,department: 1,category: 1,subcategory: 1,color: 1,price: 1,images: 1,size_names: 1,sizes: 1,productType: 1,productTag: 1,counter: 1,discountdisplayLabel: 1,discount: 1,mrp: 1,createdAt: 1,tags: 1,slug: 1,// score: { $Meta: "searchscore" },]);


const filters = await Product.aggregate([
  {
    $search: {
      compound: {
        must: finalQuery,{
    $facet: {
      category_filters: [
        {
          $group: {
            _id: "$category",count: { $sum: 1 },{ $sort: { count: -1,_id: -1 } },],subcategory_filters: [
        {
          $group: {
            _id: "$subcategory",brands_filters: [
        {
          $group: {
            _id: "$brandSlug",size_names_filters: [
        { $limit: 10000 },{ $unwind: "$sizes" },{
          $group: {
            _id: "$sizes.name",prices_filters: [
        {
          $bucketAuto: {
            groupBy: "$price",buckets: 5,]);

}

现在如果我点击品牌,它不应该也隐藏其他品牌。

示例- 我得到的产品与brandX、brandY 和brandZ 相关

当我添加brandX过滤器时..

brandY 和brandZ 也被过滤了..

我想在 UI 中显示brandX 的结果及其适当尺寸以及brandY 和brandZ 的结果

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)