sql >> Database >  >> NoSQL >> MongoDB

mongodb-aggregatieraamwerk - Haal het veld van het eerste document van de geneste array op

De eenvoudigste manier om uw resultaat te bereiken, is door een normale zoekopdracht te gebruiken en de $slice operator:

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

Het aggregatieraamwerk (zoals bij MongoDB 2.4.1) ondersteunt $slice niet of array-indexen (stem/bekijk functieverzoeken:SERVER-6074 en SERVER-4589 ).

Je zou dit kunnen doen in een aggregatieraamwerk met behulp van $unwind , $group en de $first operator, bijv.:

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

De normale $slice zou de meest performante optie moeten zijn.




  1. Mongodb 2.4 2dsphere-query's erg traag (met $geoIntersects)?

  2. Kan eigenschap 'gebruiker' van 'undefined' of 'null' niet destructureren

  3. Mangoestmodellen maken met typoscript - subdocumenten

  4. JasperFillManager.fillMelden en mongo?