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

Samlet/projekt underdokument som dokument på øverste niveau i mongo

Når du har mange, mange felter i underdokumentet og indimellem opdateres med nye felter, så er projektion ikke en gangbar mulighed. Heldigvis har MongoDB siden 3.4 en ny operatør kaldet $replaceRoot .

Alt du skal gøre er at tilføje en ny fase i slutningen af ​​din pipeline.

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

Dette ville give dig det ønskede output.

Bemærk, at i tilfælde af sammenlægning (især efter en $group fase) "kommando"-dokumentet kunne være et array og kunne indeholde flere dokumenter. I dette tilfælde skal du $unwind arrayet først for at kunne bruge $replaceRoot .



  1. Mongodb Deltag på _id felt fra String til ObjectId

  2. oprettelse af registrerings- og loginformular i node.js og mongodb

  3. Mest effektive måde at gemme indlejrede kategorier (eller hierarkiske data) i Mongo?

  4. Hvordan kan jeg oprette nye felter fra en eksisterende streng med $Project?