2017-06-19 63 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

相關問題