Golang: MongoDB -计算投影中嵌套数组的长度



在MongoDB中,我喜欢将嵌套数组的所有长度计算在一起。这只是一个mongoDB文档。

idForDB := "621101966rf42c24a8f41b87"
ctx, cancel := context.WithTimeout(context.Background(), time.Second * 20)
defer cancel()
options := options.FindOneOptions{
Projection: bson.M{
"test":          "$test",
"count": bson.M{}, // count should placed here
},
}
result := clients.MongoClient.Database("somedb").Collection("somecollection").FindOne(ctx, bson.M{"_id": idForDB}, &options)

number下面的所有对象都要计数

{
"test":"other",
"list":[
{
"number":[
{
"value": "1"
}, 
{
"value": "2"
},
{
"value": "2"
}
]
},
{
"number":[
{
"value": "1"
}, 
{
"value": "2"
},
{
"value": "2"
}
]
},
{
"number":[
{
"value": "1"
}, 
{
"value": "2"
}
]
}
]
}

"Number"字段应该是8,因为"编号"下有8个文档。对象。

使用mongoDB语法,您可以使用$reduce:

db.collection.aggregate([
{$project: {
test: "$test",
count: {
$reduce: {
input: "$list",
initialValue: 0,
in: {$add: ["$$value", {$size: "$$this.number"}]}
}
}
}
}
])

看看它在操场的例子中是如何工作的

相关内容

  • 没有找到相关文章

最新更新