JavaScript按日期查询MongoDB中的数据的要点示例
groupbydate聚合查询日期统计每天数据(信息量)
1
{
"_id":ObjectId("557ac1e2153c43c320393d9d"),
"msgType":"text",
"sendTime":ISODate("2015-06-12T11:26:26.000Z")
}
2
{
"_id":ObjectId("557ac1ee153c43c320393d9e"),
"msgType":"text",
"sendTime":ISODate("2015-06-12T11:26:38.000Z")
}
3
{
"_id":ObjectId("557ac2012de5d32d213963b5"),
"msgType":"text",
"sendTime":ISODate("2015-06-12T11:26:56.000Z")
}
4
{
"_id":ObjectId("557ac978bb31196e21d23868"),
"msgType":"text",
"sendTime":ISODate("2015-06-12T11:58:47.000Z")
}
5
{
"_id":ObjectId("557ac9afbb31196e21d23869"),
"msgType":"text",
"sendTime":ISODate("2015-06-12T11:59:43.000Z")
}
SQLHere
db.getCollection('wechat_message').aggregate(
[
{$project:{day:{$substr:["$sendTime",0,10]}}},
{$group:{_id:"$day",number:{$sum:1}}},
{$sort:{_id:-1}}
]
)
ResultHere
"result":[
{
"_id":"2015-07-06",
"number":13.0000000000000000
},
{
"_id":"2015-07-05",
"number":3.0000000000000000
},
{
"_id":"2015-07-03",
"number":10.0000000000000000
},
{
"_id":"2015-07-02",
"number":29.0000000000000000
},
]
查询某一天所有信息的3种方法,根据日期查询
mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。
第一种方式:
coll.aggregate([
{$project:{sendDate:{$substr:['$sendTime',0,10]},sendTime:1,content:1}},
{$match:{sendDate:'2015-07-05'}},
])
第二种方式(第一种的变异):
coll.aggregate([
{$match:{'sendTime':{'$gte':newDate('2015-07-05'),'$lt':newDate('2015-07-06')}}}
第三中方式(第二种的变异):
coll.aggregate([
{$match:{'sendTime':{'$gte':newDate('2015-07-0500:00:00'),'$lte':newDate('2015-07-0523:59:59')}}}
查询结果如下(展示一种方式:其他展示略有不同):
[{_id:5599b09bc16aac90e9fb7995,sendDate:'2015-07-05'},
{_id:5599b161c16aac90e9fb7996,sendDate:'2015-07-05'},
{_id:5599b161c16aac90e9fb7997,sendDate:'2015-07-05'}]