MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Projeção de array multidimensional do MongoDB


Você pode usar a estrutura de agregação:
db.test.aggregate([
    { $unwind: '$arr' },
    { $limit: 1 },
    { $project: { _id: 0, arr: 1 } },
    { $unwind: '$arr' },
    { $skip: 1 },
    { $limit: 1 }
])

Devoluções:
{ "arr": 22 }

Editar: O pôster original modificou minha solução para atender às necessidades dele e apresentou o seguinte:
db.test.aggregate([
    { $match: { name:"Olivia" } },
    { $project: { _id: 0,arr: 1 } },
    { $unwind: '$arr' },
    { $skip: 1 },
    { $limit:1 },
    { $unwind: "$arr" },
    { $skip: 2 },
    { $limit: 1 }
])

Esta consulta resultará em { arr: 77 } dados alargados fornecidos pelo PO. Observe que $skip e $limit são necessários para selecionar os elementos corretos na hierarquia da matriz.