How to flatten a subdocument into root level in MongoDB?

You can use MongoDB projection i.e $project aggregation framework pipeline operators as well. (recommended way). If you don’t want to use project check this link

db.collection.aggregation([{$project{ . . }}]);

Below is the example for your case:

db.collectionName.aggregate
([
    { 
      $project: { 
        a: 1, 
        b: '$subdoc.b', 
        c: '$subdoc.c'
      } 
    }
]);

Gives you the output as you expected i.e.

    {
        "a" : 1,
        "b" : 2,
        "c" : 3
    }

Leave a Comment