时间区间的操作:mongoose的aggregate无法match,但是find却可以找到。(非ObjecetID)
来源:互联网 发布:考研真相与黄皮书知乎 编辑:程序博客网 时间:2024/05/22 02:15
前段时间遇到的问题,在cnode上求助https://cnodejs.org/topic/5582a4bb395a0c1812f183ea
最后自己解决了,详情如下:
var getCustomerSourceListFromDataToData = function (accountid, startDate, endDate, callback) {if (!startDate) {//启始时间默认30天前 startDate = moment().subtract(30, 'days').format('L');}else { startDate = moment(startDate).format('L');}if (!endDate) {//结束时间默认今天 endDate = moment().add(1, 'days').format('L');} else { endDate = moment(endDate).add(1, 'days').format('L');}console.log('enddate:' + endDate);console.log('startDate:' + startDate);//CustomerSourceModel// .find({// date: {// $gte: startDate,// $lt: endDate// }// }).exec(callback);CustomerSourceModel .aggregate() .match({ date: { $gte: startDate, $lt: endDate } }) .group({ _id: null, totalNum: {$sum: "$num"}, }) .exec(callback); }
如上代码,实现简单的时间区间内的统计数据,结果总是match不到相应的数据,用注释掉的find的代码可以找到相关数据,math却不可以。。
已经确认aggregate方法没问题,去掉match限制,就能统计数totalNum。
mongodb版本 3.04
解决了,又是一个坑啊。是时间的格式写错了。
startDate = moment().subtract(30, ‘days’).format(‘L’);这时候时间是一个月前的时间,格式是2015-05-19.
在mongodb中直接查找db.customersources.find({’date’:{$gte: ‘2015-05-19’ ) }})是查不出来任何符合条件的记录的。
使用db.customersources.find({’date’:{$gte: new Date(2015-05-19 ) }})就可以查出来。
至于为什么在mongoose中下列代码能查询出结果。。。
CustomerSourceModel .find({ date: { $gte: '2015-05-19' } }).exec(callback);
由于自己看不懂源代码,只能归因于mongoose太任性了吧~
最后将时间格式改成如下形式,看起来好蹩脚,不知道各位是如何设置的
if (!startDate) {//启始时间默认30天前 startDate = moment(moment().subtract(30, 'days').format('L')).toDate();}else { startDate = moment(moment(startDate).format('L')).toDate();}if (!endDate) {//结束时间默认今天 endDate = moment(moment().add(1, 'days').format('L')).toDate();} else { endDate = moment(moment(endDate).add(1, 'days').format('L')).toDate();}
0 0
- 时间区间的操作:mongoose的aggregate无法match,但是find却可以找到。(非ObjecetID)
- mongoose时间区间操作
- tomcat(非安装版) 服务不能启动但是startup 却可以启动的问题
- node.js 调用 mongoose 的 aggregate 函数
- mongo 的 find和aggregate
- 关于Hibernate 在Junit测试中可以成功但是在Web下却无法运行的处理方法
- 【打开网页一片空白 可以上Q却不能上网】firefox无法在XXX找到该服务器的真相
- mongoose的基本操作(一)
- mongoose的基本操作(二)
- Java中Mongo Aggregate 的$match的写法
- mongodb的聚合函数aggregate的$match和$group方法。
- U3D遇到无法Destory,但是FindChild可以找到
- U3D遇到无法Destory,但是FindChild可以找到
- hibernateTemplate.find方法的使用,查的list不是空,但是遍历时却是null
- spring mvc导致的已配置placeholder但是placeholder却无法注入的问题(使用annotation)
- mongoose 操作mongodb数据库的
- windows up可以更新但是无法上网的一天挣扎
- wampserver可以打开localhost但是无法打开项目的解决方法
- Android数据的存储方式简介
- 时间管理的七条魔法
- 使用DOS shell自动检测JRE环境变量
- 自定义EL函数
- node-webkit 相关使用心得 --系统托盘(tray)的使用方法
- 时间区间的操作:mongoose的aggregate无法match,但是find却可以找到。(非ObjecetID)
- linux性能调分析及调优
- 汉克观点时间:营销策略汇总(6月12日到6月25日)
- 字符串_过滤处理NSCharacterSet 与invertedSet
- jQuery操作Select
- iOS开发中KVO & KVC的使用
- tomcat源码学习
- GRE写作之列提纲要注意的几个问题
- MYSQL数据库