gpt4 book ai didi

node.js - 如何使用聚合MongoDB 3.0版本获取Mongo数据

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

假设我们有 10 个集合,那么我们必须根据 tag_id 找到计数。例如,如果tag_id包含0和1,那么我们必须统计所有数据,以及统计没有tag_id或tag_id为空的数据。然后,如果它有 unread : false 则输出为所有未读的计数。

查找 tag_id 的计数以及 false 时未读的计数。

{
"_id": ObjectId("5912c7240520df77f0c2c18a"),
"email_id": "54",
"unread": "false",
"__v": NumberLong(0),
"tag_id": ["0"

]
}, {
"_id": ObjectId("5912c71e0520df77f0c2c189"),
"email_id": "55",
"unread": "false",
"__v": NumberLong(0),
"tag_id": [
"1"
]
}, {
"_id": ObjectId("5912c71d0520df77f0c2c186"),
"email_id": "51",
"unread": "false",
"__v": NumberLong(0),
"tag_id": [
"2", "1"
]
}

预期结果:

{
"data": [{
"tag_id": "1",
"count_email": 1,(count of email on the basis of tag_id)
"unread": 9(count the unread on the basis of output of tag_id)
}, {
"tag_id": "3",
"count_email": 45,
"unread": 3
}, {
"tag_id": "2",
"count_email": 5,
"unread": 4
}, {
"id": null,
"count_email": 52,
"unread": 35
}]
}

最佳答案

尝试下面的代码请参阅 - https://docs.mongodb.com/manual/reference/operator/aggregation/eq/

https://docs.mongodb.com/manual/reference/operator/aggregation/cond/

https://docs.mongodb.com/manual/reference/operator/aggregation/group/

DB.aggregate([
{$project:
{
tag_id: '$tag_id',
unreadcount: { $cond: [ { $eq: [ '$unread', 'true' ] }, 1, 0 ] }
}},
{ $group: {
_id: '$tag_id',
unread: { $sum: '$unreadcount'},
}}
], function (err, results) {
console.log(results);
})

关于node.js - 如何使用聚合MongoDB 3.0版本获取Mongo数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44015900/

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