首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充方法的mgo示例

填充方法的mgo示例
EN

Stack Overflow用户
提问于 2018-12-28 16:42:07
回答 2查看 902关注 0票数 0

我是GoLang & MongoDB的新手。我正在尝试使用mgo来理解它们之间的关系。然而,我找不到一个合适的例子来说明如何使用mgo从mongo中获取被引用的对象。我听说过populate方法,但不知道mgo如何使用它。有没有人能对此一目了然?

EN

回答 2

Stack Overflow用户

发布于 2019-01-08 10:26:51

MongoDB提供$lookup来执行左外部连接。下面是一个使用mgo的例子。

代码语言:javascript
复制
func TestLookup(t *testing.T) {
    var err error
    uri := "mongodb://localhost/stackoverflow?replicaSet=replset"
    dialInfo, _ := mgo.ParseURL(uri)
    session, _ := mgo.DialWithInfo(dialInfo)
    c := session.DB("stackoverflow").C("users")

    pipeline := `
    [{
        "$lookup": {
            "from": "addresses",
            "localField": "address_id",
            "foreignField": "_id",
            "as": "address"
        }
    }, {
        "$unwind": {
            "path": "$address"
        }
    }, {
        "$project": {
            "_id": 0,
            "name": "$name",
            "address": "$address.address"
        }
    }]
     `
    var v []map[string]interface{}
    var results []bson.M
    json.Unmarshal([]byte(pipeline), &v)
    if err = c.Pipe(v).All(&results); err != nil {
        t.Fatal(err)
    }
    for _, doc := range results {
        t.Log(doc)
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-12-28 17:22:11

你的问题太宽泛了,但是一般来说,如果你想用一个查询来获取“引用的”对象,你必须使用MongoDB的Aggregation framework,特别是lookup阶段。

聚合框架可以通过Collection.Pipe()方法在mgo中使用。

有关示例,请参阅Get a value in a reference of a lookup with MongoDB and Golang

更多的例子:

How to get the count value using $lookup in mongodb using golang?

Only return the looked up document with Mongo and Golang

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53955748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档