2017-06-19 79 views
0

我在我的monogodb表中有10000的数据,需要写一个查询来获得两个日期之间的计数。下面是响应看起来像MongoDB的表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}); 

    }); 

}) 

感谢,

回答

0

我会在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 iy不是你的日期搜索改变它。 我建议你把日期存储为字符串。 尝试这样的:

> 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") } 
+0

感谢您的答复,可以使用上面的查询,我得到的时候“没有定义ISODate”的错误。我认为我在存储字符串格式的releasedata时犯了错误。可以请你给我建议 – nikey

+0

@nikey看看我的答案。我编辑了我的帖子。 –

+0

非常感谢Patrick – nikey

相关问题