sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan sammenkæder man strengresultater fra flere MongoDB-poster til et enkelt resultat i MongoDB?

Brug $group for at få et array fra alle dokumenterne og derefter $reduce med $concat for at få én streng:

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

Efter $group du vil få et enkelt dokument, som indeholder en række af al text værdier. Derefter $reduce "scanner" arrayet og sammenkæder tilstanden ($$value ) med aktuelt behandlede vare. For det første element vil tilstanden være en tom streng, så jeg bruger $cond for at undgå at have mellemrum i begyndelsen.




  1. MongoDB $replaceOne

  2. Redis-taster funktion til match med flere mønstre

  3. Hvordan listes alle Redis-databaser?

  4. mongodb database med Java play 2.0