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

Jak połączyć wyniki ciągu z wielu rekordów MongoDB w jeden wynik w MongoDB?

Użyj $group aby pobrać tablicę ze wszystkich dokumentów, a następnie $reduce z $concat aby uzyskać jeden ciąg:

db.col.aggregate([
    {
        $group: {
            _id: null,
            text: { $push: "$text" }
        }
    },
    {
        $project: {
            text: {
                $reduce: {
                    input: "$text",
                    initialValue: "",
                    in: {
                        $cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
                    }
                }
            }
        }
    }
])

Po $group otrzymasz pojedynczy dokument, który zawiera tablicę wszystkich text wartości. Następnie $reduce "skanuje" tablicę i łączy stan ($$value ) z aktualnie przetwarzaną pozycją. Dla pierwszego elementu stan będzie pustym ciągiem, więc używam $cond aby uniknąć białych znaków na początku.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Programowanie baz danych w Pythonie z MongoDB dla początkujących

  2. node.JS Express routing paszportów

  3. Jak zaktualizować konkretny element tablicy w MongoDB

  4. Dynamicznie twórz indeks za pomocą mongoid

  5. Użyj pymongo bezpośrednio w django