sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB flerdimensionell arrayprojektion

Du kan använda aggregeringsramverket:

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

Returnerar:

{ "arr": 22 }

Redigera: Den ursprungliga affischen har modifierat min lösning för att passa hans behov och kom fram till följande:

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

Denna fråga kommer att resultera i { arr: 77 } med tanke på de utökade uppgifter som tillhandahålls av OP. Observera att $skip och $limit behövs för att välja rätt element i arrayhierarkin.



  1. Hur man benchmarkar mongodb/mongoid-skript, för att jämföra två olika frågetekniker

  2. Mungos sammanfogningsdata

  3. Filtrera YearMonth från Mongo-dokument

  4. Konvertera till att datera MongoDB via mongoimport