获取mongodb中数组的多个值的计数

时间:2017-03-14 09:28:51

标签: node.js mongodb

我想在mongodb和nodejs中执行搜索,这将返回我将提供的id计数。

我的收藏是一个日志表

{
    "_id" : ObjectId("5836d0f7f8462cbc6d0caffc"),
    "DeviceId" : "abcd1234",
    "AppType" : "web",
    "UserId" : "5836cb01f8462cbc6d0caff8",
    "ArticleId" : "5836cb01f8462cbc6d0caff8",
    "Timestamp" : ISODate("2016-11-24T11:37:27.851Z")
},
{
    "_id" : ObjectId("5836dba8a2943528448a3050"),
    "DeviceId" : null,
    "AppType" : null,
    "UserId" : null,
    "ArticleId" : 5836e493f2acbd1d34648e78,
    "Timestamp" : ISODate("2016-11-24T12:23:04.484Z")
},
{
    "_id" : ObjectId("5836e445c3b43429b4810ad4"),
    "DeviceId" : null,
    "AppType" : null,
    "UserId" : null,
    "ArticleId" : 5836d0f7f8462cbc6d0caffc,
    "Timestamp" : ISODate("2016-11-24T12:59:49.820Z")
},
{
    "_id" : ObjectId("5836e493f2acbd1d34648e78"),
    "DeviceId" : null,
    "AppType" : null,
    "UserId" : null,
    "ArticleId" : 5836d0f7f8462cbc6d0caffc,
    "Timestamp" : ISODate("2016-11-24T13:01:07.030Z")
}

依旧......

我的搜索字符串将是搜索需要在ArticleId上执行

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

我想要一个如下所示的结果集

{
"1":{ArticleId:"5836d0f7f8462cbc6d0caffc", count:2}, 
"2":[ArticleId:"5836e493f2acbd1d34648e78", count:9}, 
"3":[ArticleId:"5836dba8a2943528448a3050", count:35}
}

任何人都可以提前向我提出查询

1 个答案:

答案 0 :(得分:2)

我不知道你是否意识到,但你所有的计数都是1。

那是因为Mongo中的每个_id都是唯一的,所以如果它在那里那么它只有一次。

此外,您想要的输出无效:

 { 1:{_id:ObjectId("5836d0f7f8462cbc6d0caffc"), count:2}, 
   2:{ObjectId("5836e493f2acbd1d34648e78"), count:9}, 
   3:{ObjectId("5836dba8a2943528448a3050"), count:35}}

它不是有效的JSON,不是有效的JavaScript,无效的Hjson,无效的JSON5,​​无效的任何东西 - 所以无论你做什么,你都永远无法得到那个结果。 (而且,如果您更改预期输出,则每count仍然是1,因此无论如何修复格式都是毫无意义的。)