mongodb - 填充方法的 mgo 示例
问题描述
我是 GoLang 和 MongoDB 的新手。我正在尝试使用 mgo 了解它们的关系。但是,我无法找到一个合适的示例来说明如何使用 mgo 从 Go 中的 mongo 中获取引用的对象。我听说过填充方法,但不知道 mgo 是如何使用它的。任何人都可以点亮同样的灯吗?
解决方案
MongoDB 提供$lookup
执行左外连接。下面是一个使用 mgo 的例子。
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)
}
}
推荐阅读
- image - FLUTTER:使用中值滤波器混合图像
- javascript - 如何在 React 中操作来自 api 调用的数据?
- gcov - 无法在跨配置文件环境中生成 gcda 文件
- javascript - 错误:未捕获(承诺中) ReferenceError:未定义 React
- ghdl - Cocotb 和 ghdl 版本不匹配?
- c++ - (编译opencv2.4)Makefile:165:目标“全部”的配方失败
- powershell - Powershell - 如何搜索(使用通配符)和替换 CSV 文件中的值?
- image-processing - 我的测试损失达到数百万是否正常
- performance - Haskell 分析中的杂质或随机性
- python - 如何在 Python 中结合使用 Request 和 BeautifulSoup 来加速 Webscraping?