sql >> Databáze >  >> NoSQL >> MongoDB

Jak zřetězit výsledky řetězců z více záznamů MongoDB do jednoho výsledku v MongoDB?

Použijte $group získat pole ze všech dokumentů a poté $reduce s $concat získat jeden řetězec:

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 získáte jeden dokument, který obsahuje pole všech text hodnoty. Poté $reduce "prohledá" pole a zřetězí stav ($$value ) s aktuálně zpracovávanou položkou. Pro první stav položky bude prázdný řetězec, takže používám $cond abyste se vyhnuli mezerám na začátku.




  1. Jak převést z datového typu řetězec na datum?

  2. Vraťte určitá pole pomocí .populate() z Mongoose

  3. Redis se místo REDIS_URL pokouší připojit k localhost na Heroku

  4. Jak uložit výsledek hledání agregovaného stromu katalogu v Redis