MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB multidimensionale Array-Projektion

Sie können das Aggregationsframework verwenden:

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

Rückgabe:

{ "arr": 22 }

Bearbeiten: Der Originalposter hat meine Lösung an seine Bedürfnisse angepasst und folgendes herausgebracht:

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

Diese Abfrage ergibt { arr: 77 } angesichts der erweiterten Daten, die vom OP bereitgestellt werden. Beachten Sie, dass $skip und $limit benötigt werden, um die richtigen Elemente in der Array-Hierarchie auszuwählen.