You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中MongoDB查询:匹配数组最后一个元素的taskState

Spring Boot中MongoDB匹配数组最后一个元素的查询实现

针对你需要查询stateHistory数组最后一个元素的taskState属于指定数组lastTaskStateIn的需求,有两种简洁的实现方式:

方式一:直接使用数组负索引

MongoDB支持通过负索引-1直接定位数组的最后一个元素,对应的Spring Data MongoDB查询代码如下:

query.addCriteria(Criteria.where("stateHistory.-1.taskState").in(lastTaskStateIn));

方式二:使用聚合表达式(适用于复杂场景)

如果需要更灵活的逻辑扩展,可以用$expr结合$last聚合操作符来获取数组最后一个元素的taskState,再判断是否在目标数组中:

import org.bson.Document;
import java.util.Arrays;

// ...

query.addCriteria(Criteria.where("$expr")
    .expr(new Document("$in", Arrays.asList(
        new Document("$last", "$stateHistory.taskState"),
        lastTaskStateIn
    ))));

验证说明

  • 当lastTaskStateIn为["FINISH"]时,会匹配到你提供的示例文档;
  • 当lastTaskStateIn为["DONE", "START"]时,不会匹配该文档,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Leon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:17:08