db.collection.aggregate([
{
$match : { filterQuery}
},
{
$addFields :{ “customGradeOrder” : { $indexOfArray: [ [“Gold”, “Silver”, “Bronze”] , “$grade” ] }}
},{$sort : { customGradeOrder : 1 } }
]);mongo驱动程序Aggregates是否有任何方法来添加从数组操作符的索引解析值的字段?
例子:
学生1: A级银子
学生2:B级金名
学生三年级:C铜牌
该查询是查询学生集合,并按学生年级的特定值(而不是简单的升序或降序)对其进行排序。
产出如下:B金A银C青铜
发布于 2022-10-03 15:53:54
除了您提到的解决方案之外,这也是可行的:
FindIterable<Document> result = collection.aggregate(Arrays.asList(new Document("$addFields",
new Document("customGradeOrder",
new Document("$indexOfArray", Arrays.asList(Arrays.asList("Gold", "Silver", "Bronze"), "$grade")))),
new Document("$sort",
new Document("customGradeOrder", 1L))));https://stackoverflow.com/questions/73934203
复制相似问题