gpt4 book ai didi

node.js - Mongoose 对子文档中的项目进行计数

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:26 25 4
gpt4 key购买 nike

我有以下架构:

{
_id: 1,
post: 'content',
comments: [
{
id: 1,
items: ['<other_doc_id',...] // assume 3 items
},
{
id: 2,
items: ['<other_doc_id',...] // assume 2 items
}
]
}

我想计算集合中所有文档的项目数,就像上面的场景一样,它应该返回 5,如果我们有另一个具有相同注释的文档,那么它应该返回 10。

更新这是我的示例数据

"comments": [
{
"id": {
"$oid": "5a201f6d7295d76514a69a7c"
},
"_id": {
"$oid": "5a2e84cc9735111c147a359f"
},
"tags": [
{
"$oid": "5a251acb6eba8810f97e7abc"
},
{
"$oid": "5a251ae66eba8810f97e7abd"
}
],
"items": [
{
"$oid": "5a201f767295d76514a69a7d"
},
{
"$oid": "5a2512a1dc9a8c106c82226d"
}
]
}
],

查询

posts.aggregate([{
"$project": {
"count": {
"$sum": {
"$map": {
"input": "comments",
"as": "result",
"in": {
"$size": "$$result.items"
}
}
}
}
}
}]);

最佳答案

您可以使用 $map 来计算文档注释数组中每个项目的 $size,然后使用 $sum 来计算所有大小。

db.collection_name.aggregate([
{
"$project": {
"count": {
"$sum": {
"$map": {
"input": "$comments",
"as": "result",
"in": {
"$size": "$$result.items"
}
}
}
}
}
}
])

关于node.js - Mongoose 对子文档中的项目进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47777488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com