How to find nested documents mongodb using the official mongo driver

Issue

I have this document and would like to filter it to get and document inside the Content array :

[
{
    "ID": "61f1244daeaea5f165851fc9",
    "name": "Mulandi",
    "author": "Owayo",
    "description": "dnjsfnvlksfnvls",
    "created_at": "2022-01-26T10:37:01.558Z",

    "Section": [
        {
            "ID": "61f557213fd9b086c3a422c5",
            "Title": "Weee",
            "Content": [
                {
                    "ID": "61f5586e3fd9b086c3a422dc",
                    "Subsection_Title": "Idk",
                    "Content": "Something"
                }
            ]
        }
    ],
}

]

how should i go about so as to filter this document i tried this but it didn’t work :

pipeline := []bson.M{
        {"$match": bson.M{"Name": name}},
        {"$unwind": "$Section"},
        {"$unwind": "$Section.Content"},
        {"$project": bson.M{
            "Section.Title":                sectiontitle,
            "Section.Content.subsectionid": iuud,
        }},
    }
    iter, err := collection.Aggregate(ctx, pipeline)
    if err != nil {
        return nil, err
    }
    var elem models.Course
    for iter.Next(ctx) {
        var elem models.Section
        err = iter.Decode(&elem)
        if err != nil {
            log.Fatal(err)
        }
    }

Solution

db.collection.aggregate([
  {
    "$match": {
      "name": "Mulandi"
    }
  },
  {
    "$unwind": "$Section"
  },
  {
    "$unwind": "$Section.Content"
  },
  {
    "$match": {
      "Section.Content.ID": "61f5586e3fd9b086c3a422dc"
    }
  },
  {
    "$project": {
      "Subsection_Title": "$Section.Content.Subsection_Title",
      "Content": "$Section.Content.Content",
      "_id": "$Section.Content.ID"
    }
  }
])

mongoplayground

Answered By – YuTing

Answer Checked By – Timothy Miller (GoLangFix Admin)

Leave a Reply

Your email address will not be published.