sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB multidimenzionální projekce pole

Můžete použít agregační rámec:

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

Vrátí:

{ "arr": 22 }

Upravit: Původní plakát upravil mé řešení tak, aby vyhovovalo jeho potřebám, a přišel s následujícím:

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

Výsledkem tohoto dotazu bude { arr: 77 } vzhledem k rozšířeným údajům poskytovaným OP. Všimněte si, že $skip a $limit jsou potřeba k výběru správných prvků v hierarchii pole.



  1. Získá dílčí dokumenty podle geoNear - MongoDB

  2. Vícenásobné použití pozičního operátoru `$` k aktualizaci vnořených polí

  3. Může redis zakázat odpovědi na zřetězené příkazy?

  4. Jak MongoDB implementuje své prostorové indexy?