微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 $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 举报,一经查实,本站将立刻删除。