sql >> Base de Datos >  >> NoSQL >> MongoDB

marco de agregación mongodb:obtenga el campo del primer documento de la matriz anidada

La forma más fácil de lograr su resultado es usar una consulta de búsqueda normal y el $slice operador:

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

El marco de agregación (como en MongoDB 2.4.1) no es compatible con $slice o índices de matriz (solicitudes de función de votación/ver:SERVER-6074 y SERVER-4589 ).

Podría hacer esto en el marco de agregación usando $unwind , $group y el $first operador, por ejemplo:

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

El $slice normal debería ser la opción de mayor rendimiento.