需要从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/

10-09 18:14