【发布时间】:2023-03-11 13:57:02
【问题描述】:
我正在尝试使用以下文档查询 MongoDB 集合(我无法控制),这些文档用作每个作业定义的作业日志:
{
"definition": ...,
"jobs": [ // sequential
{
"time": ...,
"result": "success"
},
{
"time": ... (after previous),
"result": "failure"
}
{
"time": ...,
"result": "running"
}
]
}
我想查找最近完成作业运行失败的每个作业定义,其中“失败”和“成功”是仅有的两种“已完成”结果类型,但可能有任何我不知道的其他结果的数量。
到目前为止,我已经想出这个来找到所有失败的工作:
db.collection.find({jobs: {$elemMatch: {result: "failure"}}})
如果纯 mongo 无法做到这一点,我当然可以获取失败列表并以编程方式搜索过滤器以匹配我的特定要求。
编辑:
我只能使用 mongo 2.6。我可以忽略任何非失败和非成功结果,但在成功和失败结果之前、之后和中间可能有任意数量的结果。
【问题讨论】:
-
你为什么回滚我的编辑?您认为当前的标题很好地描述了您的问题吗?
-
@user3100115 我不认为我的标题描述得特别好,但你的标题有点误导,因为我不一定要寻找最后一个元素。请参阅编辑 cmets。
-
如果您不是在寻找最后一个,那么最近完成的作业运行失败是什么意思?
-
我的意思是“不完整”的工作可能是最后一个元素。我想要最后一个“完整”的工作,但它可能不是数组的最后一个元素。
标签: mongodb mongodb-query aggregation-framework