sql >> Database >  >> NoSQL >> MongoDB

MongoDB multidimensionale array-projectie

U kunt het aggregatieraamwerk gebruiken:

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

Retourneren:

{ "arr": 22 }

Bewerken: De originele poster heeft mijn oplossing aangepast aan zijn behoeften en kwam met het volgende:

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

Deze zoekopdracht resulteert in { arr: 77 } gezien de uitgebreide gegevens die door het OP worden verstrekt. Merk op dat $skip en $limit nodig zijn om de juiste elementen in de arrayhiërarchie te selecteren.



  1. Query op arraytype - MongoDB

  2. Mongoose:hoe aggregaat gebruiken en samen zoeken

  3. MongoDB-opdrachten vanuit DOS of Windows

  4. Hoe kan ik alleen documenten opvragen met de laatste tijdstempel van een groep?