gpt4 book ai didi

node.js - 在 mongoDB 中对数组进行计数

转载 作者:可可西里 更新时间:2023-11-01 10:41:05 26 4
gpt4 key购买 nike

需要从nodejs和mongodb中的集合中获取ArticleId的计数

/* 1 */
{
"_id" : ObjectId("5836d0f7f8462cbc6d0caffc"),
"DeviceId" : "abcd1234",
"AppType" : "web",
"UserId" : "5836cb01f8462cbc6d0caff8",
"ArticleId" : "5836cb01f8462cbc6d0caff8",
"Timestamp" : ISODate("2016-11-24T11:37:27.851Z")
}

/* 2 */
{
"_id" : ObjectId("5836e5f617632727286475e0"),
"Apptype" : "android",
"DeviceId" : "abcsd1212",
"UserId" : "19283738264817",
"ArticleId" : "5836wp0615555727286475e0",
"Timestamp" : "2016-11-24 12:23:04.484Z"
}

/* 3 */
{
"_id" : ObjectId("583d487803d7691d54a82060"),
"DeviceId" : null,
"AppType" : null,
"UserId" : null,
"ArticleId" : "583d28412f93b67c1500002a",
"Timestamp" : ISODate("2016-11-29T09:20:56.895Z")
}

/* 4 */
{
"_id" : ObjectId("583d4aa564b47b199ca6b71e"),
"DeviceId" : null,
"AppType" : null,
"UserId" : null,
"ArticleId" : "583559814d93b6080d000029",
"Timestamp" : ISODate("2016-11-29T09:30:13.785Z")
}

/* 5 */
{
"_id" : ObjectId("583d4ab364b47b199ca6b71f"),
"DeviceId" : null,
"AppType" : null,
"UserId" : null,
"ArticleId" : "58343672dc1434742700002a",
"Timestamp" : ISODate("2016-11-29T09:30:27.200Z")
}

/* 6 */
{
"_id" : ObjectId("584502efc0e6500558d20874"),
"DeviceId" : null,
"AppType" : null,
"UserId" : null,
"ArticleId" : "583d28412f93b67c1500002a",
"Timestamp" : ISODate("2016-12-05T06:02:23.905Z")
}

where子句就像(ArticleId的集合)

{
"5836d0f7f8462cbc6d0caffc",
"5836e493f2acbd1d34648e78",
"5836dba8a2943528448a3050"
}

需要得到这样的结果

[{"ArticleId" : "5836d0f7f8462cbc6d0caffc","ViewCount":5},
{"ArticleId" : "5836e493f2acbd1d34648e78","ViewCount":42},
{"ArticleId" : "5836dba8a2943528448a3050","ViewCount":19}]

请帮助,如果有任何不清楚的地方请告诉我,在此先感谢

最佳答案

这个问题最多可以通过使用 MongoDB 的聚合功能来解决。

文档可用here

您应该做的是:1) 按文章 ID 聚合(= 分组)文档,然后 2) 计算每组文档的数量。

db.collection_name.aggregate(
[
{
$group : {
_id : { articleId: $ArticleId },
count: { $sum: 1 }
}
}
]
)

(代码未经测试,但仍然是一个好的开始)

现在,如果您只需要某组文章的计数,​​您可以预先过滤,但根据您的集合大小,这甚至可能不是必需的。

关于node.js - 在 mongoDB 中对数组进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42783802/

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