sql >> Database >  >> NoSQL >> MongoDB

Gevolgen van het gebruik van $unwind op geneste arrays?

Het is altijd een goed idee om op de hoogte te zijn van geheugenbronnen wanneer $unwind vanwege de replicatie van gegevens die optreedt.

$match gebruiken om de resultaten te beperken tot de specifieke documenten waarnaar u op zoek bent, is natuurlijk een manier om de hoeveelheid geheugen die nodig is om de geretourneerde gegevens te bewaren, te verminderen.

Een andere manier om de geheugenvoetafdruk te verkleinen is met $project . $project stelt u in staat om de documenten in de pijplijn te reorganiseren, zodat u alleen de elementen retourneert waarin u geïnteresseerd bent.

Om uw voorbeeld te gebruiken:

{
  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"}    
      ]
    }
  ]
}

Met

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

zal de someInfo . verwijderen en andere attributen waarin u misschien niet geïnteresseerd bent. Dan kunt u $project weer na het ontspannen...

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

zal vrij compacte resultaten opleveren zoals:

{ 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" } }

Hoewel de attribuutnamen met één letter de leesbaarheid voor mensen verminderen, vermindert het de grootte van de gegevens die wordt opgeblazen door lange herhaalde attribuutnamen.




  1. vinden door _id met Mongoose

  2. c# mongodb hoofdlettergevoelig zoeken

  3. Hoe de min-waarde in mongodb te vinden

  4. Een gids voor implementatie en onderhoud van MongoDB met behulp van Puppet:deel 2