在日期范围内查询Mongodb集合

时间:2016-04-12 06:21:32

标签: node.js mongodb

我有一个包含以下文件的集合:

var interactions = [ { _id: 54ed77eec55b18101e82f205,
    email: 'customercare@tikona.in',
    contactCompanyName: 'tikona',
    contactFullName: 'Customercare',
    contactValue: 0,
    "interactionDate": "2016-03-30T08:28:58.000Z",
},
{ _id: 54ed77eec55b18101e82f205,
    email: 'inbox@google.com',
    contactCompanyName: 'google',
    contactFullName: 'inbox',
    contactValue: 0,
    "interactionDate": "2016-03-30T08:28:58.000Z",
},
{ _id: 54ed77eec55b18101e82f205,
    email: 'nazar@zinavo.com',
    contactCompanyName: 'zinavo',
    contactFullName: 'nazar',
    contactValue: 0,
    "interactionDate": "2016-03-25T08:28:58.000Z",
},
    { _id: 54ed77eec55b18101e82f205,
        email: 'nazar@zinavo.com',
        contactCompanyName: 'zinavo',
        contactFullName: 'nazar',
        contactValue: 0,
        "interactionDate": "2016-03-26T08:28:58.000Z",
    },
    { _id: 54ed77eec55b18101e82f205,
        email: 'nazar@zinavo.com',
        contactCompanyName: 'zinavo',
        contactFullName: 'nazar',
        contactValue: 0,
        "interactionDate": "2016-03-13T08:28:58.000Z",
    },
    { _id: 54ed77eec55b18101e82f205,
        email: 'inbox@google.com',
        contactCompanyName: 'google',
        contactFullName: 'inbox',
        contactValue: 0,
        "interactionDate": "2016-04-06T08:28:58.000Z",
    },
    { _id: 54ed77eec55b18101e82f205,
        email: 'nazar@zinavo.com',
        contactCompanyName: 'zinavo',
        contactFullName: 'nazar',
        contactValue: 0,
        "interactionDate": "2016-04-03T08:28:58.000Z",
    }]

如何查询此集合,使interactionDate大于或等于过去60天但小于或等于过去30天。即我需要在2016年2月12日至2016年3月12日以及2016年3月12日至2016年4月12日期间查找和统计文件,然后找出这两个日期范围之间的互动次数之间的差异。

我尝试的技术

获取两个日期范围的互动。例如

{ '$gte': Fri Feb 12 2016 11:29:29 GMT+0530 (IST),
  '$lte': Tue March 12 2016 11:29:29 GMT+0530 (IST) }

然后运行第二个查询:

{ '$gte': Fri Marc 12 2016 11:29:29 GMT+0530 (IST),
  '$lte': Tue Apr 12 2016 11:29:29 GMT+0530 (IST) }

然后,对于每封电子邮件,减去交互次数。

汇总查询:

{
    $match:{
        {"interactions.email":{$in:emailArr}}}
},
{
    $group:{
        _id: "$interactions.email",
            count: { $sum: 1}
    }
},
{
    $sort: {"count" : -1}
},
{
    $project:{
        email: "$_id",
            interactionCount
    :
        "$count",
            _id
    :
        0,
    }

0 个答案:

没有答案