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

MongoDB grupuje wszystkie klucze i wartości w kolekcji według określonego pola

Jesteś na dobrej drodze.

Konwertując cały obiekt na tablicę, zapisz także pole Kategoria.

Potrzebne etapy:

  • $projekt, aby zapisać kategorię i przekonwertować obiekt na tablicę
  • $rozwiń tablicę, aby rozpatrywać każde pole osobno
  • $match, aby usunąć _id , Category i inne pola, których nie chcesz grupować z tablicy
  • $grupuj według Category i k aby umieścić wartości każdego klucza w tablicy
  • $grupuj według Category zebrać razem klucze i tablice
  • $projekt do konwersji tablicy z zebranymi wartościami na obiekt
  • $addFields, aby wstawić kategorię do nowego obiektu
  • $replaceRoot, aby promować nowy obiekt
db.collection.aggregate([
  {$project: {
      Category: 1,
      fields: {$objectToArray: "$$ROOT"}
  }},
  {$unwind: "$fields"},
  {$match: {"fields.k": {$not: {$in: ["_id","Category"]}} }},
  {$group: {
      _id: {
        Category: "$Category",
        key: "$fields.k"
      },
      value: {$push: "$fields.v"}
  }},
  {$group: {
      _id: "$_id.Category",
      fields: {
        $push: {
          "k": "$_id.key",
          "v": "$value"
        }
      }
  }},
  {$project: {
      fields: {$arrayToObject: "$fields"}
  }},
  {$addFields: {
      "fields.Category": "$_id"
  }},
  {$replaceRoot: { newRoot: "$fields"}}
])

Plac zabaw




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. jak przekonwertować ciąg na wartości liczbowe w mongodb

  2. Wykonanie aktualizacji na ścieżce „_id” zmodyfikowałoby niezmienne pole „_id”

  3. Dlaczego wydajność Mongodb jest lepsza w systemie Linux niż w systemie Windows?

  4. Jak korzystać z MongoDB Stitch w aplikacjach na Androida

  5. MongoDB w wersji 2.6 nadal nie działa w geoindeksowaniu 2dsphere, powołując się na niemożność wyodrębnienia kluczy geograficznych i możliwą nieprawidłową geometrię