如何使用官方 mongo 驱动程序查找嵌套文档 mongodb

我有这个文档,想过滤它以获取并记录在 Content 数组中:


[

{

    "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"

                }

            ]

        }

    ],

}

]


我应该怎么做才能过滤这个文件我试过这个但它没有用:


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)

        }

    }


Helenr
浏览 125回答 2
2回答

DIEA

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

白板的微信

iuud, _ := primitive.ObjectIDFromHex(subsectionid)pipeline := []bson.M{    {"$match": bson.M{"Name": name}},    {"$unwind": "$Section"},    {"$unwind": "$Section.Content"},    {"$match": bson.M{"Section.Content.ID": iuud}},    {"$project": bson.M{        "Subsection_Title": "$Section.Content.Subsection_Title",        "Content":       "$Section.Content.Content",        "_id": "$Section.Content.ID",    }},} iter, err := collection.Aggregate(ctx, pipeline)if err != nil {    return nil, err}var results []bson.Mif err = iter.All(context.TODO(), &results); err != nil {    log.Fatal(err)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go