sql >> Database >  >> NoSQL >> MongoDB

Hoe tekenreeksresultaten van meerdere MongoDB-records samenvoegen tot één resultaat in MongoDB?

Gebruik $group om een ​​array van alle documenten te krijgen en vervolgens $reduce met $concat om één string te krijgen:

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

Na $group je krijgt een enkel document dat een array bevat van alle text waarden. Dan $reduce "scant" de array en voegt de status samen ($$value ) met het momenteel verwerkte artikel. Voor het eerste item is de status een lege string, dus ik gebruik $cond om witruimte aan het begin te voorkomen.




  1. MongoDB - Waarom zou ik een cursor gebruiken in plaats van iterator_to_array (in PHP)

  2. MongoDB C#-stuurprogramma, query door een array-element met regex

  3. mangoest - mogelijke circulaire afhankelijkheid?

  4. Vergelijk tussen 2 velden van een document in MongoDB