MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Agregação Mongo, projete um subcampo do primeiro elemento na matriz


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! */] }
    }
}])