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

mongodb aggregeringsramme - Hent det første dokuments felt i det indlejrede array

Den nemmeste måde at opnå dit resultat på er at bruge en normal søgeforespørgsel og $slice operatør:

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

Aggregeringsrammen (som ved MongoDB 2.4.1) understøtter ikke $slice eller array-indekser (afstemning/se-funktionsanmodninger:SERVER-6074 og SERVER-4589 ).

Du kan gøre dette i aggregeringsramme ved hjælp af $unwind , $group og $first operatør, f.eks.:

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

Den normale $slice bør være den mest effektive mulighed.




  1. MongoDB PHP Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException:Ingen passende servere fundet

  2. mongodb sortering og regex-forespørgsel på en effektiv måde

  3. hvordan man definerer placering i en enhed ved hjælp af mongodb

  4. hvordan man erstatter flere forekomster af en sætning mongodb