mongodb同一个document中两个字段比较查询
2018-03-23 09:52
3555 查看
db.ct_work.aggregate([ {$project:{crtTm:1,stuNum: 1,subNum: 1,cmpTo: { $cmp: [ "$subNum", {$multiply:["$stuNum",0.5]} ] },_id: 1}} , { $match : {crtTm:{$gt:ISODate("2018-03-12T13:30:00.000Z"),$lt:ISODate("2018-03-18T17:00:00.000Z")} }}, {$group:{_id:"$cmpTo",total: { $sum: 1 }}} ])
前比后大:1
前后相等:0
前小于后:-1
2.这种方式更好:
db.ct_work.aggregate( [ { $match : {crtTm:{$gt:ISODate("2018-03-12T13:30:00.000Z"),$lt:ISODate("2018-03-18T17:00:00.000Z")} }}, { $redact: { "$cond": [{ "$gte": ["$subNum", {$multiply:["$stuNum",0.5]}] }, "$$KEEP", "$$PRUNE" ] } } ] ).count()直接出来一个数字
第三种方式:
db.ct_work.find( {"$where":"this.subNum >= this.stuNum * 0.5", "fnhSta":1 , crtTm:{$gt:ISODate("2018-03-19T00:00:00.000Z"),$lt:ISODate("2018-03-25T23:59:59.000Z")} }).count()mongoTemplate写法:Criteria criteria = new Criteria() {
@Override
public DBObject getCriteriaObject() {
DBObject obj = new BasicDBObject();
obj.put("$where", "this.subNum >= this.stuNum * 0.5");
return obj;
}
};
Query query = new Query();
query.addCriteria(criteria)
.addCriteria(Criteria.where("fnhSta").is(1)
.andOperator(Criteria.where("crtTm").lt(c2.getTime()),Criteria.where("crtTm").gt(c.getTime())));
long result = mongoTemplate.count(query,"collectionName");
相关文章推荐
- MongoDB高级查询:对一个表中的2个字段进行比较----------- $where操作符
- MongoDB高级查询(二):对一个表中的2个字段中的"内嵌对象"中的字段进行比较----------- aggregate聚合查询
- thinkphp where 查询比较相同一个表中两个字段值
- java mongodb聚合统计查询,比较两个字段
- 查询一个表中的两个字段值相同的数据
- 表A中一条记录的两个字段都对应于表B的同一个字段 如何查询?SQL, thinkphp[5]
- 如果一个字段为两个不同字段的查询方法
- [ztjSQL]一个TextBox查询出一个表的两个字段
- 联表查询,一个表的两个字段是另一个表的一个字段的值,如何去查
- 两个表中多个字段相同,查询一个中有在另一个表中没有的数据
- all与any操作符和返回两个结果集和把一个结果集当表和查询结果创建表和同时更新几个字段
- 在 sql查询中如何将两个字段显示在一个字段
- MongoDB笔记三:C Driver 含日期类型字段document添加和查询,指定document返回的field
- [Django]比较同一个model中的两个字段,进行条件过滤
- mongodb 只查询一个字段
- 根据两个list的相同字段比较,合并成一个list
- 只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名
- MyBatis查询两个字段,返回Map,一个字段作为key,一个字段作为value的实现
- MongoDB只查询一个字段
- Sql 查询同一个表中两个字段里相同的数据