Il modo più semplice per ottenere il risultato è utilizzare una normale query di ricerca e il $slice
operatore:
db.collection.find( {_id: "User1"}, {"likes.sublikes": {$slice: 1}} )
Il framework di aggregazione (come in MongoDB 2.4.1) non supporta $slice
o indici di array (vota/richiesta di funzionalità di controllo:SERVER-6074
e SERVER-4589
).
Puoi farlo nel framework di aggregazione usando $unwind
, $group
e il $first
operatore, ad esempio:
db.collection.aggregate([
{ $match: {
_id : "User1"
}},
{ $unwind: "$likes.sublikes" },
{ $group: {
_id: "$_id",
like: { $first: "$likes.sublikes" }
}},
{ $project: {
_id: 0,
"UserID": "$_id",
"WebsiteName": "$like.WebsiteName"
}}
])
Il normale $slice
dovrebbe essere l'opzione più performante.