我正在尝试估算document数组中元素的数量。
options.SetProjection(bson.M{
"foo": true,
"nrOfBars": bson.M{ "$size": "$bars" },
})
bars
是数组的字段名。
尽管此查询始终返回0而不是数组长度。
如何使用新的mongo-go-driver驱动程序正确查询数组的长度?
答案 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中的说明遍历光标。