使用Go驱动在MongoDB 5的$lookup中嵌套pipeline报错排查
问题解决:MongoDB Go驱动$lookup嵌套pipeline类型错误
错误的核心原因是**$lookup的pipeline参数需要是聚合阶段数组**,你用了bson.D(文档类型)而非bson.A(数组类型),导致MongoDB无法识别。
修改后的代码如下:
lookup_translated_post := bson.D{ { Key: "$lookup", Value: bson.D{ {Key: "from", Value: model_name}, {Key: "localField", Value: "translated_version"}, {Key: "foreignField", Value: "_id"}, { Key: "pipeline", Value: bson.A{ // 这里改为bson.A数组类型 bson.D{ {Key: "$project", Value: bson.D{ {Key: "slug", Value: 1}, }}, }, }, }, {Key: "as", Value: "translated_version"}, }, }, }
关键说明
- 在MongoDB聚合语法中,
pipeline是由多个聚合阶段组成的数组,对应Go驱动里的bson.A类型;而bson.D仅用于表示单个键值对结构的文档。 - 修改后,pipeline会被正确识别为聚合阶段数组,嵌套的
$project阶段仅返回目标文档的slug字段,完全匹配你获取关联帖子slug的需求。
内容的提问来源于stack exchange,提问作者Andrew Rusinas
相关产品推荐
相关产品推荐

