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

estrutura de agregação mongodb - busca o campo do primeiro documento da matriz aninhada


A maneira mais fácil de obter seu resultado é usar uma consulta de localização normal e o $slice operador:
db.collection.find( {_id: "User1"}, {"likes.sublikes": {$slice: 1}} )

A estrutura de agregação (como no MongoDB 2.4.1) não suporta $slice ou índices de matriz (vote/observe solicitações de recursos:SERVER-6074 e SERVER-4589 ).

Você pode fazer isso na estrutura de agregação usando $unwind , $group e o $first operador, por exemplo:
db.collection.aggregate([
    { $match: {
         _id : "User1"
    }},
    { $unwind: "$likes.sublikes" },
    { $group: {
        _id: "$_id",
        like: { $first: "$likes.sublikes" }
    }},
    { $project: {
        _id: 0,
        "UserID": "$_id",
        "WebsiteName": "$like.WebsiteName"
    }}
])

O $slice normal deve ser a opção com melhor desempenho.