Spring MongoDB 使用自定义表达式对数组进行排序

时间:2021-08-01 22:08:50

标签: spring mongodb

文档结构:

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

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

  • 最初的文档在其 priorityList 中包含给定的字符串
  • 按日期排序

我在做什么

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''

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

0 个答案:

没有答案