Node.js Mongo Groupby聚合基于;“关键”;不值

Node.js Mongo Groupby聚合基于;“关键”;不值,node.js,mongodb,mongoose,mongodb-query,loopbackjs,Node.js,Mongodb,Mongoose,Mongodb Query,Loopbackjs,我被mongo查询卡住了。我有一个mongo收集结构,目前无法修改,因为它是非常大的数据 我需要从收集中得到一些结果,所以想方设法得到它 以下是我的集合json模式:- { "date": "2017-01-01T00:00:00.000Z", "bob":"P", "jacob":"P", "wilson":"A", "dev":"SL" }, { "date": "2017-01-02T00:00:00.000Z", "bob":"P"

我被mongo查询卡住了。我有一个mongo收集结构,目前无法修改,因为它是非常大的数据

我需要从收集中得到一些结果,所以想方设法得到它

以下是我的集合json模式:-

{
    "date": "2017-01-01T00:00:00.000Z",
    "bob":"P",
    "jacob":"P",
    "wilson":"A",
    "dev":"SL"
},
{
    "date": "2017-01-02T00:00:00.000Z",
    "bob":"P",
    "jacob":"A",
    "wilson":"A",
    "dev":"SL"
},
{
    "date": "2017-01-03T00:00:00.000Z",
    "bob":"P",
    "jacob":"P",
    "wilson":"A",
    "dev":"SL"
},
{
    "date": "2017-01-04T00:00:00.000Z",
    "shashikant":"P",
    "jacob":"P",
    "wilson":"SL",
    "dev":"SL"
}
....
作为输出,我正在寻找以下类型的结构:-

from 1st jan 2017 to 30th jan 2017

    bob      P      17
    bob      A      2
    wilson   P      10
    dev      SL.    1
    .....
我正在为我的后端使用环回,但仍然可以使用普通的mongodb查询来获取输出


请帮助

MongoDB仅允许阵列使用$unwind。但你可以用一个简单的方法来实现你想要的:

//在此定义时间范围
var from=新日期('2015-01-01T00:00:00.000Z');
var to=新日期('2025-01-01T00:00:00.000Z');
db.getCollection('test').mapReduce(函数(){
var-keys=Object.keys(这个);
//如果在记录上找不到日期,只需跳过即可
如果(!此日期){
返回;
}
var日期=新日期(此日期);
//跳过不符合[form;to]间隔的记录
如果(!(日期>=开始日期(&D)