MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

cadre d'agrégation mongodb - Récupérer le champ du premier document du tableau imbriqué

Le moyen le plus simple d'obtenir votre résultat consiste à utiliser une requête de recherche normale et le $slice opérateur :

db.collection.find( {_id: "User1"}, {"likes.sublikes": {$slice: 1}} )

Le framework d'agrégation (comme dans MongoDB 2.4.1) ne prend pas en charge $slice ou index de tableau (vote/watch feature requests :SERVER-6074 et SERVER-4589 ).

Vous pouvez le faire dans le cadre d'agrégation en utilisant $unwind , $group et le $first opérateur, par exemple :

db.collection.aggregate([
    { $match: {
         _id : "User1"
    }},
    { $unwind: "$likes.sublikes" },
    { $group: {
        _id: "$_id",
        like: { $first: "$likes.sublikes" }
    }},
    { $project: {
        _id: 0,
        "UserID": "$_id",
        "WebsiteName": "$like.WebsiteName"
    }}
])

Le $slice normal devrait être l'option la plus performante.