我有这两个结构:
Category struct {
ID primitive.ObjectID `bson:"_id"`
Name string `bson:"name"`
}
Book struct {
ID primitive.ObjectID `bson:"_id"`
Name string `bson:"name"`
Category *Category `bson:"category"`
}
我想找到一本汇总其类别的书并执行此查询
// lookup stage
lookupStage := bson.D{{"$lookup", bson.D{
{"from", "category"},
{"localField", "category"},
{"foreignField", "_id"},
{"as", "category"}}}}
通过此查找,我会将获取的类别文档放入图书的类别字段中。
// match stage (cut for simplicity, it doesn't care)
var matchStage bson.D = ...
pipeline := mongo.Pipeline{
matchStage,
lookupStage,
}
cur, err := bookCollection.Aggregate(context.TODO(), pipeline)
cur.Decode(&book)
如果我直接在 MongoDB 中执行查询一切正常,但在 Go 中我得到一个空类别。我认为问题在于查找返回一个数组但我试图将它映射到一个对象上。
所以问题是:如何获取查找操作产生的数组的第一个元素并将其放置在 book 实例中?
我正在使用 mongo 官方驱动程序。
守候你守候我
相关分类