MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

framework di aggregazione mongodb - Recupera il campo del primo documento dell'array nidificato

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.