MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Konsekwencje użycia $unwind w zagnieżdżonych tablicach?

Zawsze dobrze jest być świadomym zasobów pamięci, gdy $odpręż z powodu replikacji danych, która ma miejsce.

Korzystanie z $match zawężenie wyników do konkretnych dokumentów, których szukasz, jest oczywiście jednym ze sposobów zmniejszenia ilości pamięci niezbędnej do przechowywania zwróconych danych.

Innym sposobem na zmniejszenie zużycia pamięci jest użycie $project . $projekt pozwala na reorganizację dokumentów w potoku, tak aby zwracać tylko te elementy, którymi jesteś zainteresowany.

Aby użyć swojego przykładu,

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

Z

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

usunie niektóreinformacje i inne atrybuty, którymi możesz nie być zainteresowany. Wtedy możesz $project ponownie po rozwinięciu...

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

zwróci dość zwięzłe wyniki, takie jak:

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

Chociaż jednoliterowe nazwy atrybutów zmniejszają czytelność dla ludzi, zmniejszają rozmiar danych, które są powiększane przez długie, powtarzające się nazwy atrybutów.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Polecenie przypomnienia przy użyciu MongoDB discord.py

  2. Jak używać operatora $i w mongodb - sterowniku java

  3. Jak zaktualizować dokumenty MongoDB za pomocą tablic poddokumentów?

  4. Integracja ClusterControl z SNMP — dowód koncepcji:część pierwsza

  5. zapytanie mongodb według podpola