Mongodb mongo go驱动器投影阵列长度

Mongodb mongo go驱动器投影阵列长度,mongodb,go,Mongodb,Go,我试图得到文档数组中元素数量的投影 options.SetProjection(bson.M{ "foo": true, "nrOfBars": bson.M{ "$size": "$bars" }, }) bars是数组的字段名。 但此查询始终返回0而不是数组长度 如何使用新的mongo go驱动程序正确查询数组长度?您正在尝试使用聚合运算符作为投影文档的一部分。A用于简单查询,仅返回某些字段 您要使用的是项目中的$project阶段。这与简单的投影文档不同,您可以使用更复杂

我试图得到文档数组中元素数量的投影

options.SetProjection(bson.M{
    "foo": true,
    "nrOfBars": bson.M{ "$size": "$bars" },
})
bars是数组的字段名。 但此查询始终返回0而不是数组长度


如何使用新的mongo go驱动程序正确查询数组长度?

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

您要使用的是项目中的$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)

此聚合返回一个游标。要访问结果,您必须按中所述遍历光标。

效果很好,谢谢!有没有办法摆脱go-vet警告github.com/mongodb/mongo-go-driver/bson/primitive.E复合文字使用无眼字段?