MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да свържа низови резултати от множество MongoDB записи в един резултат в MongoDB?

Използвайте $group за да получите масив от всички документи и след това $reduce с $concat за да получите един низ:

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

След $group ще получите един документ, който съдържа масив от целия text стойности. След това $reduce "сканира" масива и свързва състоянието ($$value ) с текущо обработен артикул. За първия елемент състоянието ще бъде празен низ, така че използвам $cond за да избегнете празно пространство в началото.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $ Composer не може да намери разширение mongodb, необходимо е разширение Mongodb

  2. MongoDB - Еквивалент на LEFT JOIN, където една колекция не съществува

  3. Ръководството за одит на база данни с отворен код на DevOps – всичко, което трябва да знаете

  4. MongoDB транзакция

  5. Преобразувайте условията на инструмента за създаване на заявки в операции на MongoDB, включително вложен масив от поддокументи