我想根据数组大小对 Mongodb 数据进行排序
I want to sort the Mongodb data based on Array size
我有学生(字符串)和讲师(字符串列表)。我想根据讲师人数降序获取记录。讲师如下
样本:[a,b,c] -3, [e,f] -2, [g,h,i,j] -4.
我要的是4、3、2的顺序
这是基于现场指导员数组的size.How使用mongoTemplate或自定义mongodb查询或聚合来查询这个??
查询 1
- 使用教师数组的
$size
添加一个新字段
- 按该字段降序排列
- 取消设置该字段
*sort 不接受表达式,如果不添加新字段,我们无法在 1 个阶段完成。
aggregate(
[{"$set":{"nInstructors":{"$size":"$instructor"}}},
{"$sort":{"nInstructors":-1}},
{"$unset":["nInstructors"]}])
查询2
- 与上面相同,但首先检查是否为数组,以避免在字段具有其他类型或缺失时出错。
aggregate(
[{"$set":
{"nInstructors":
{"$cond":
[{"$isArray":["$instructor"]}, {"$size":"$instructor"}, 0]}}},
{"$sort":{"nInstructors":-1}},
{"$unset":["nInstructors"]}])
我找到了一种从 mongodb 中按数组大小排序的方法。
以上汇总为:
newAggregation(addFields().addField("nInstructors")
.withValue(new Document ("$size, "nInstructors")).build(),
排序(DESC,“nInstructors”),
限制(限制计数)
);
我有学生(字符串)和讲师(字符串列表)。我想根据讲师人数降序获取记录。讲师如下 样本:[a,b,c] -3, [e,f] -2, [g,h,i,j] -4.
我要的是4、3、2的顺序
这是基于现场指导员数组的size.How使用mongoTemplate或自定义mongodb查询或聚合来查询这个??
查询 1
- 使用教师数组的
$size
添加一个新字段 - 按该字段降序排列
- 取消设置该字段
*sort 不接受表达式,如果不添加新字段,我们无法在 1 个阶段完成。
aggregate(
[{"$set":{"nInstructors":{"$size":"$instructor"}}},
{"$sort":{"nInstructors":-1}},
{"$unset":["nInstructors"]}])
查询2
- 与上面相同,但首先检查是否为数组,以避免在字段具有其他类型或缺失时出错。
aggregate(
[{"$set":
{"nInstructors":
{"$cond":
[{"$isArray":["$instructor"]}, {"$size":"$instructor"}, 0]}}},
{"$sort":{"nInstructors":-1}},
{"$unset":["nInstructors"]}])
我找到了一种从 mongodb 中按数组大小排序的方法。 以上汇总为:
newAggregation(addFields().addField("nInstructors") .withValue(new Document ("$size, "nInstructors")).build(), 排序(DESC,“nInstructors”), 限制(限制计数) );