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

Konsekvenser af at bruge $unwind på indlejrede arrays?

Det er altid en god idé at være opmærksom på hukommelsesressourcer, når $slap af på grund af den replikering af data, der opstår.

Brug af $match at indsnævre resultaterne til de specifikke dokumenter, du leder efter, er naturligvis en måde at reducere mængden af ​​hukommelse, der er nødvendig for at opbevare de returnerede data.

En anden måde at reducere hukommelsesfodaftrykket på er med $project . $projekt giver dig mulighed for at omorganisere dokumenterne i pipelinen, så du kun returnerer de elementer, du er interesseret i.

For at bruge dit eksempel,

{
  someInfo: "blah blah blah",
  answers: [
    {
      email: "[email protected]",
      values: [
        {value: 1, label: "test1"},
        {value: 2, label: "test2"}    
      ]
    },
    {
      email: "[email protected]",
      values: [
        {value: 6, label: "test1"},
        {value: 1, label: "test2"}    
      ]
    }
  ]
}

Med

db.collection.aggregate([{ $match: { <element>: <value> }}, { $project: { _id: 0, answers: 1}}])

vil fjerne someInfo og andre attributter, du måske ikke er interesseret i. Så kan du $projekt igen efter afvikling...

db.collection.aggregate([
   { $match: { <element>: <value> }},
   { $project: { _id: 0, answers: 1}},
   { $unwind: "$answers"},
   { $unwind: "$answers.tags"},
   { $project: { e: "$answers.email", v: "$answers.values"}}
])

vil returnere ret kompakte resultater som:

{ e: "[email protected]", v: { value: 1, label: "test1" } }
{ e: "[email protected]", v: { value: 2, label: "test2" } }
{ e: "[email protected]", v: { value: 6, label: "test1" } }
{ e: "[email protected]", v: { value: 1, label: "test2" } }

Selvom enkeltbogstavs attributnavne reducerer menneskelig læsbarhed, skærer det ned på størrelsen af ​​de data, der er oppustet af lange gentagne attributnavne.




  1. Hvor er mongoimport installeret på Mac OS X

  2. Slaget om NoSQL-databaserne - Sammenligning af MongoDB og Oracle NoSQL

  3. mongodb aggregering om opdatering af samlinger

  4. Effektivitet ved indsættelse i mongodb (pymongo)