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.