SQL: select sum(*) from cs.table where (product_code ='af7n8k1c1qzgx4ax' or product_code =' y4kn3hb07ebu670u') and create_time > 1439999999000
根据产品,时间去查询Sum
String codes = "af7n8k1c1qzgx4ax,y4kn3hb07ebu670u";
BSONObject groupItem = new BasicBSONObject();
BasicBSONObject matcher = new BasicBSONObject();
BasicBSONList matcherList = new BasicBSONList();
if (!"".equals(codes)) {
BasicBSONObject obj = new BasicBSONObject();
BasicBSONList source_list = new BasicBSONList();
String[] codesSplit = codes.split(",");
for (String code : codesSplit) {
BasicBSONObject source = new BasicBSONObject();
source.put("product_code", code);
source_list.add(source);
}
//groupItem.put("_id", "$product_code");这里的group 怎么写的?
obj.put("$or", source_list);
matcherList.add(obj);
}
BasicBSONObject obj = new BasicBSONObject();
BasicBSONObject end_obj = new BasicBSONObject();
end_obj.put("$gt", 1439999999000l);
obj.put("create_tm ", end_obj);
matcherList.add(obj);
//添加条件
matcher.put("$and", matcherList);
BSONObject selector = new BasicBSONObject();
BSONObject total = new BasicBSONObject();
total.put("$sum", "$coins");
groupItem.put("total", total);
selector.put("$group", groupItem);
BSONObject matcherBson = new BasicBSONObject();
matcherBson.put("$match", matcher);
List list = new ArrayList();
list.add(selector); //添加查询字段
list.add(matcherBson); // 添加查询
CollectionSpace cs = sdb.getCollectionSpace("cashcs");
DBCollection dbc = cs.getCollection("t_order_consume");
DBCursor cursor = dbc.aggregate(list);
match:{ "$match" : { "$and" : [ { "$or" : [ { "product_code" : "af7n8k1c1qzgx4ax"} , { "product_code" : "y4kn3hb07ebu670u"}]} , { "create_tm " : { "$gt" : 1439999999000}}]}}
group:
{ "$group" : { "total" : { "$sum" : "$coins"}}}
这两个单独查询都没问题. 但合是怎么合的啊? 求大神