首页 > 解决方案 > Spring MongoDB 在数组上使用自定义表达式进行排序

问题描述

文件结构:

{
  id: ObjectId("5ef1cd704b35c6d6698f2050")
  date: 2021-12-15T11:03:00.000+00:00
  priorityList: Array
    0: "any-String-id-here"
    1: ...
}

我想查找按具有以下条件的自定义表达式排序的文档:

我所做的

TypedAggregation<MyDocument> aggregation = newAggregation(MyDocument.class,
  project("id")
    .and("isInList").applyCondition(ConditionalOperators
        .when(Criteria.where("priorityList").all("here-my-string-to-check"))
        .then(1)
        .otherwise(0)),
  sort(Sort.by(
    Sort.Order.desc("isInList"),
    Sort.Order.desc("date"))));
mongoTemplate.aggregate(aggregation, "my-collection-name", String.class);

生产

com.mongodb.MongoCommandException: 
Command failed with error 168 (InvalidPipelineOperator): 'Invalid $project ::
caused by :: Unrecognized expression '$all''

如何实现所需的排序条件?

标签: springmongodb

解决方案


推荐阅读