MongoDB查询获取两个日期之间的计数

时间:2017-06-19 14:09:11

标签: node.js mongodb

我的monogodb表中有10000个数据,需要编写一个查询来获取两个日期之间的计数。下面是响应看起来像mongodb表

{ _id: 5942c8e366ae6b3aefb37232,
    serialnumber: 5523330044,
    model: ‘MODEL1’,
    version: 'EM.12.12.12',
    releasedata: '2017-06-01',
    modelid: 90000001,
    uiversion: 'EM.12.12.12',
    imageversion: 'EM.M1.M1.M1',
    ecnnumber: null },
  { _id: 5942c8e366ae6b3aefb37231,
    serialnumber: 5523330043,
    model: 'MODEL1',
    version: 'EM.12.12.12',
    releasedata: '2017-06-01',
    modelid: 90000001,
    uiversion: 'EM.12.12.12',
    imageversion: 'EM.M1.M1.M1',
    ecnnumber: null },
  { _id: 5942c8e366ae6b3aefb37233,
    serialnumber: 5523330045,
    model: 'MODEL1',
    version: 'EM.12.12.12',
    releasedata: '2017-06-01',
    modelid: 90000001,
    uiversion: 'EM.12.12.12',
    imageversion: 'EM.M1.M1.M1',
    ecnnumber: null },
  { _id: 5942c8e366ae6b3aefb37234,
    serialnumber: 5523330046,
    model: 'MODEL1',
    version: 'EM.12.12.12',
    releasedata: '2017-06-01',
    modelid: 90000001,
    uiversion: 'EM.12.12.12',
    imageversion: 'EM.M1.M1.M1',
    ecnnumber: null },
  { _id: 5942c8e366ae6b3aefb37235,
    serialnumber: 5523330047,
    model: 'MODEL1',
    version: 'EM.12.12.12',
    releasedata: '2017-06-01',
    modelid: 90000001,
    uiversion: 'EM.12.12.12',
    imageversion: 'EM.M1.M1.M1',
    ecnnumber: null },
  { _id: 5942c8e366ae6b3aefb37237,
    serialnumber: 5523330049,
    model: 'MODEL1',
    version: 'EM.12.12.12',
    releasedata: '2017-06-01',
    modelid: 90000001,
    uiversion: 'EM.12.12.12',
    imageversion: 'EM.M1.M1.M1',
    ecnnumber: null },

我尝试了,从下面的代码中得到了" 1000"的数量,但我实际上需要编写一个查询,它给出了已注册设备的计数,包括开始日期和结束日期。

在上面的回复中,我有发布密钥来查询日期。

请帮助我找到解决方案。

app.post('/getTheCount', function (req, res) {

    var collection    =    gdb.collection('machine');
    var modelid       =    parseInt(req.body.modelid);
    collection.count({modelid:modelid}, function(error, numOfDocs) {
     console.log('I have '+numOfDocs+' documents in my collection');
     res.send({numOfDocs});

     });

 })

谢谢,

1 个答案:

答案 0 :(得分:1)

我会在mongodb中使用$gte$lte尝试此操作。

db.machine.find({
    releasedata: {
        $gte: ISODate("2010-04-29T00:00:00.000Z"),
        $lt: ISODate("2010-05-01T00:00:00.000Z")
    }
}).count();

如果releasedata不是您的搜索日期,请更改它。 我建议你把日期存储不是字符串。 试试这样:

> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2010-04-29T00:00:00.000Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2010-05-01T00:00:00.000Z") }