mongo-go-driver投影阵列长度

时间:2019-02-10 14:16:46

标签: mongodb go

我正在尝试估算document数组中元素的数量。

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

bars是数组的字段名。
尽管此查询始终返回0而不是数组长度。

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

1 个答案:

答案 0 :(得分:1)

您正试图将聚合运算符用作投影文档的一部分。 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中的说明遍历光标。