Caso você esteja usando pelo menos o MongoDB v3.2, você pode usar o $arrayElemAt operador para isso. A consulta abaixo faz o que você deseja. No entanto, ele não retornará nenhum dado para a amostra fornecida porque o
"Instructions.1": { $exists: true }
filtro remove o documento de amostra. db.getCollection('Orders').aggregate([{
$match: {
"Instructions.1": {
$exists: true
}
}
}, {
$project: {
"_id": 0,
"UserId": "$User.EntityId",
"ItemName": { $arrayElemAt: [ "$Items.Details.ItemName", 0 /* first item! */] }
}
}])