Critérios / agregação: procure todos os documentos completos cujo campo array tenha elemento com o último status fornecido

Eu tenho uma estrutura de documentos como esta -

{
"_id" : "11223344",
"orderId" : "00001041",
"key" : "56h68ab4c876dbe1cd0b1ee"
"status" : [
    {
        "updatedTimeStamp" : ISODate("2017-06-01T16:05:42.737Z"),
        "orderStatus" : "INITIATED"
    },
    {
        "updatedTimeStamp" : ISODate("2017-06-01T16:05:42.737Z"),
        "orderStatus" : "CONFIRM_PAYMENT"
    },
    {
        "updatedTimeStamp" : ISODate("2017-06-01T16:07:36.797Z"),
        "orderStatus" : "RESTAURENT_CONFIRMATION_PENDING"
    },
    {
        "updatedTimeStamp" : ISODate("2017-06-01T16:20:36.798Z"),
        "orderStatus" : "ORDER_CONFIRMED"
    },
    {
        "updatedTimeStamp" : ISODate("2017-06-01T16:51:27.562Z"),
        "orderStatus" : "PREPARED"
    },
    {
        "updatedTimeStamp" : ISODate("2017-06-01T17:31:27.562Z"),
        "orderStatus" : "DISPATCHED"
    }
],
"customerDetails" : {
    "firstName" : "XXXX",
    "lastName" : "XXXXX",
    "emailId" : "[email protected]",
    "phoneNumber" : "XXXXXXXXX"
},
"amountPaid" : "250.0",
"orderDetails" : {blah... blah... blah...}

}

Nesta coleção de pedidos, desejo procurar todos os documentos com o status x determinado (por exemplo, CONFIRM_PAYMENT). Portanto, é encontrado pelo valor máximo de "updatedTimeStamp" na matriz de documentos "status" e se esse documento incorporado da matriz máxima for igual ao status "CONFIRM_PAYMENT", o documento inteiro deverá ser incluído no resultado final.

Podemos resolvê-lo com a API de critérios?

Há um tipo semelhante de pergunta -Localização do MongoDB por valor máximo na matriz de documentos . Mas eu quero fazer isso com critérios de primavera ou API agregada. Abaixo está a consulta que fiz com a ajuda da pergunta acima mencionada. Esta consulta está fornecendo todos os IDs de documentos que eu quero. Estou interessado em documentos completos.

db.order.aggregate([
  {$match: {key:"56h68ab4c876dbe1cd0b1ee"}},
  {$unwind: "$status"},
  {$project:{Id:"$_id",status:"$status.orderStatus", updatedTimeStamp:"$status.updatedTimeStamp"} },
  {$sort:{updatedTimeStamp:1} },
  {$group: {_id: "$Id", LatestStatus:{$last: "$status"}, updatedTimeStamp:{$last: "$updatedTimeStamp"} } },
  {$match:{"LatestStatus":"CONFIRM_PAYMENT"}},
 {$project:{Id:"$Id"}}
])

Alguém pode ajudar a resolver isso com critérios ou API agregada? * Há outro filtro nesta consulta que é "chave".

questionAnswers(1)

yourAnswerToTheQuestion