我的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});
});
})
谢谢,
答案 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") }