我正在试验MongoDB及其聚合框架。通过展开操作,我可以将具有数组字段的文档拆分为每个数组索引的多个文档。现在,如果数组中的数据没有自然排序顺序,我该如何在MongoDB中对其进行排序?
示例:
产品集合包含以下文档(省略_id字段)
{ "type" : "t-shirt", "size" : [ "S", "M", "L" ] }
{ "type" : "pants", "size" : [ "XS", "S", "M", "L", "XL" ] }
按size
字段展开收集数据后,结果为
{ "type" : "t-shirt", "size" : "S" }
{ "type" : "t-shirt", "size" : "M" }
{ "type" : "t-shirt", "size" : "L" }
{ "type" : "pants", "size" : "XS" }
{ "type" : "pants", "size" : "S" }
{ "type" : "pants", "size" : "M" }
{ "type" : "pants", "size" : "L" }
{ "type" : "pants", "size" : "XL" }
size字段没有自然排序,例如XL和XS彼此相邻排序,尽管它们应该排序到第一个/最后一个位置。
我 migth 通过首先将每个大小投影到相应的数字来解决这个问题,即XS = 1,S = 2 ......但是否有更简单的方法来执行自定义排序吗
答案 0 :(得分:1)
是的,没有更简单的方法,但你有三种方法可以做到,
1)如您所指定,您可以使用
$project
并根据大小输入数字123并对数字进行排序
2)您可以按大小写字符串asc的第二个字符排序,然后对其进行排序
3)使用$text
根据其重量进行排序