MongoDB中如何对嵌套在文档数组中的数组进行"unwind and sort"处理?

3
如何使排序对大小写敏感并且能够正常工作?我们该如何进行修复?
请提供最佳修复方法。
db.products.aggregate([
  {
    "$unwind": "$receipe"
  },
  {
    "$unwind": "$receipe.burger"
  },
  {
    "$sort": {
      "receipe.burger.name": 1
    }
  }
])

https://mongoplayground.net/p/2pnUABI_-Mr

在我的例子中,Family Burger 应该首先显示,而不是 Paneer Burger。
2个回答

5

Demo - https://mongoplayground.net/p/Vt3GQx0tdXC

  • 使用$toLower添加一个新字段并将其转换为小写。
  • 按小写值进行排序。

   db.products.aggregate([
      { "$unwind": "$receipe" },
      { "$unwind": "$receipe.burger" },
      { $addFields: { "insensitiveName": { $toLower: "$receipe.burger.name" } } },
      { $sort: { "insensitiveName": 1 } }
    ])

0

在您的查询中指定排序规则选项caseLevel

标志,确定是否在强度级别1或2包括大小写比较。如果为真,则包括大小写比较。

db.products.aggregate(
  [
    { "$unwind": "$receipe" },
    { "$unwind": "$receipe.burger" },
    { "$sort": { "receipe.burger.name": 1 } }
  ],
  { collation: { locale: "en", caseLevel: true } }
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接