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

Поддокумент на агрегат/проект като документ от най-високо ниво в mongo

Когато имате много, много полета в поддокумента и понякога той се актуализира с нови полета, тогава проекцията не е жизнеспособна опция. За щастие, от 3.4 MongoDB има нов оператор, наречен $replaceRoot .

Всичко, което трябва да направите, е да добавите нов етап в края на вашия конвейер.

db.getCollection('sample').aggregate([
    {
        $replaceRoot: {newRoot: "$command"}
    },
    {
        $project: {score: 0 } //exclude score field
    }
])

Това ще ви даде желания резултат.

Имайте предвид, че в случай на агрегиране (особено след $group етап) документът „команда“ може да бъде масив и може да съдържа множество документи. В този случай трябва да $unwind първо масива, за да можете да използвате $replaceRoot .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoose:опциите за междинен софтуер преди deleteOne не работят

  2. Подобряване на производителността на MongoDB текстово търсене

  3. Mongodb $push във вложен масив

  4. Mongoose, MongoDB:Как да запазите() документ след push()?

  5. Mongoexport към множество csv файлове