【问题标题】:Mongoose: $sort case insensitive in many languagesMongoose:$sort 在许多语言中不区分大小写
【发布时间】:2019-02-21 14:19:38
【问题描述】:

我有一个查询,我需要使用$sort 对许多不同的语言不区分大小写。我读到了metadata sort,但我不明白它在我的查询中是如何工作的,或者我怎样才能使排序对许多语言不区分大小写(utf-8)

我的查询

  let sort;
  if (sortDetailServices.field === "employee.name") {
    sort = {
      "employee.name":  sortDetailServices.status ? 1 : -1
    }
  }
     Schedule.aggregate([{
          '$match': findTerm
        },
        {
          '$facet': {
            'totalizer': [{
                '$group': {
                  '_id': '$service.id',
                  'count': {
                    '$sum': 1
                  },
                  'totalValue': {
                    '$sum': '$value'
                  },
                  'totalComission': {
                    '$sum': '$comissionValue'
                  }
                }
              },
              {
                '$group': {
                  '_id': null,
                  'storesCount': {
                    '$push': {
                      'store': '$_id',
                      'count': '$count'
                    }
                  },
                  'totalValue': {
                    '$sum': '$totalValue'
                  },
                  'totalServices': {
                    '$sum': '$count'
                  },
                  'totalComission': {
                    '$sum': '$totalComission'
                  }
                }
              }
            ],
            'data': [{
                '$project': {
                  'employee.name': 1,
                  'value': 1,
                  'scheduleStart': 1,
                  'scheduleEnd': 1,
                  'comissionValue': 1,
                  'status': 1,
                  'paymentMethod': 1
                }
              },
              {
                '$sort': sort
              },
              {
                '$skip': req.body.limit * req.body.page
              },
              {
                '$limit': req.body.limit
              }
            ],
          }
        }
      ]
    ...

【问题讨论】:

    标签: mongodb sorting mongoose


    【解决方案1】:

    更新:截至目前 mongodb 有不区分大小写的索引:

    更新:此答案已过时,3.4 将具有不区分大小写的索引。查看 JIRA 了解更多信息https://jira.mongodb.org/browse/SERVER-90

    很遗憾,MongoDB 还没有不区分大小写的索引:https://jira.mongodb.org/browse/SERVER-90,并且该任务已被推迟。

    这意味着当前排序不区分大小写的唯一方法是实际创建一个特定的“小写”字段,复制相关排序字段的值(当然是小写)并对其进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 2023-03-24
      • 2023-01-31
      • 1970-01-01
      • 2013-03-23
      • 2016-05-27
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多