登录
首页 >  Golang >  Go问答

使用Go编写的MongoDB驱动程序查询数组的长度

来源:stackoverflow

时间:2024-03-22 21:48:32 153浏览 收藏

使用新的 mongo-go-driver 查询数组长度时,不能将聚合运算符直接作为投影文档的一部分。需要使用聚合管道中的 $project 阶段,通过 $size 运算符获取数组长度。示例代码: ```go ctx := context.TODO() pipeline := bson.A{ bson.D{{ "$project", bson.D{ {"foo", 1}, {"nrOfBars", bson.D{ {"$size", "$bar"}, }}, }, }}, } cur, err := col.Aggregate(ctx, pipeline) ```

问题内容

我正在尝试获取文档数组中元素数量的投影。

options.SetProjection(bson.M{
    "foo": true,
    "nrOfBars": bson.M{ "$size": "$bars" },
})

bars 是数组的字段名。

但此查询始终返回 0 而不是数组长度。

如何使用新的 mongo-go-driver 正确查询数组的长度?


解决方案


您正在尝试使用聚合运算符作为投影文档的一部分。 projection document 用于简单查询,仅返回某些字段。

您要使用的是 aggregation pipeline 中的 $project 阶段。这与简单的投影文档不同,您可以使用更复杂的聚合运算符,例如 $size。这是一些示例代码,我相信它可以满足您的需求:

ctx := context.TODO()

pipeline := bson.A{
    bson.D{{
        "$project",
        bson.D{
            {"foo", 1},
            {"nrOfBars", bson.D{
                {"$size", "$bar"},
            }},
        },
    }},
}

cur, err := col.Aggregate(ctx, pipeline)

此聚合返回一个游标。要访问结果,您必须按照 cursor documentation 中的说明迭代游标。

好了,本文到此结束,带大家了解了《使用Go编写的MongoDB驱动程序查询数组的长度》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>