sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur sammanfogar man strängresultat från flera MongoDB-poster till ett enda resultat i MongoDB?

Använd $group för att hämta en array från alla dokument och sedan $reduce med $concat för att få en sträng:

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 kommer att få ett enda dokument som innehåller en array av all text värden. Sedan $reduce "scannar" arrayen och sammanfogar tillståndet ($$value ) med för närvarande bearbetad artikel. För det första objektet kommer tillståndet att vara en tom sträng så jag använder $cond för att undvika blanksteg i början.




  1. Hur lägger man till ett sista fält i en befintlig vår-data-mongodb-dokumentsamling?

  2. Kan inte ansluta till MongoDB i Azure

  3. Hur visar jag detaljer om pymongo.errors.OperationFailure?

  4. fråga i mongo Shell ger SyntaxError:missing :after property