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

Proiezione di array multidimensionali MongoDB

Puoi utilizzare il framework di aggregazione:

db.test.aggregate([
    { $unwind: '$arr' },
    { $limit: 1 },
    { $project: { _id: 0, arr: 1 } },
    { $unwind: '$arr' },
    { $skip: 1 },
    { $limit: 1 }
])

Resi:

{ "arr": 22 }

Modifica: Il poster originale ha modificato la mia soluzione per soddisfare le sue esigenze e ha creato quanto segue:

db.test.aggregate([
    { $match: { name:"Olivia" } },
    { $project: { _id: 0,arr: 1 } },
    { $unwind: '$arr' },
    { $skip: 1 },
    { $limit:1 },
    { $unwind: "$arr" },
    { $skip: 2 },
    { $limit: 1 }
])

Questa query risulterà in { arr: 77 } visti i dati estesi forniti dal PO. Si noti che $skip e $limit sono necessari per selezionare gli elementi giusti nella gerarchia dell'array.