package com.tangzhe.mongodb.mongotemplate;

 import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.tangzhe.mongodb.BaseTest;
import com.tangzhe.mongodb.Student;
import com.tangzhe.shop.document.MBalanceIncrease;
import com.tangzhe.shop.document.MVip;
import com.tangzhe.shop.entity.AmountChart;
import com.tangzhe.shop.entity.VipChart;
import com.tangzhe.test.document.PlayareaStatistics;
import com.tangzhe.test.util.DateUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.util.*; import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; public class MongoTemplateTest2 extends BaseTest { @Autowired
private MongoTemplate mongoTemplate; //@Test
public void test01() {
// List<PlayareaStatistics> list = mongoTemplate.find(
// Query.query(
// new Criteria().andOperator(
// Criteria.where("areaId").is(21),
// Criteria.where("type").is("READ")
// )
// ),
// PlayareaStatistics.class);
// System.out.println(list); // GroupByResults<PlayareaStatistics> group = mongoTemplate.group(
// Criteria.where("areaId").is(21),
// "playarea_statistics",
// new GroupBy("type"),
// PlayareaStatistics.class);
// System.out.println(group); Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("areaId").is(21)),
group("type").count().as("sum"));
AggregationResults<BasicDBObject> outputTypeCount =
mongoTemplate.aggregate(aggregation, PlayareaStatistics.class, BasicDBObject.class); for (Iterator<BasicDBObject> iterator = outputTypeCount.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
System.out.println(obj);
}
} //@Test
public void test02() {
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("areaId").is(21)
.andOperator(Criteria.where("type").is("READ"))),
group("city").count().as("sum"));
AggregationResults<BasicDBObject> outputTypeCount =
mongoTemplate.aggregate(aggregation, PlayareaStatistics.class, BasicDBObject.class); for (Iterator<BasicDBObject> iterator = outputTypeCount.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
System.out.println(obj);
}
} //@Test
public void test03() throws ParseException {
// 默认查当月第一天至当天之间的数据
//Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2018-05-02 00:00:00");
String beginTime = DateUtils.getMonthFirstDay(date);
String endTime = DateUtils.getMonthLastDay(date);
Date beginDate = sdf.parse(beginTime);
Date endDate = sdf.parse(endTime); Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("areaId").is(21L)
.andOperator(
Criteria.where("operateTime").gte(beginDate).lt(endDate),
Criteria.where("type").is("READ"))),
group("logDate").count().as("sum"));
AggregationResults<BasicDBObject> outputTypeCount =
mongoTemplate.aggregate(aggregation, PlayareaStatistics.class, BasicDBObject.class); Map<String, Integer> map = new HashMap<>();
for (Iterator<BasicDBObject> iterator = outputTypeCount.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
String day = ((String) obj.get("_id")).substring(8, 10); // day
map.put(day, (Integer) obj.get("sum"));
} System.out.println(map);
} //@Test
public void test04() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2018-05-02 00:00:00");
String beginTime = DateUtils.getMonthFirstDay(date);
String endTime = DateUtils.getMonthLastDay(date);
Date beginDate = sdf.parse(beginTime);
Date endDate = sdf.parse(endTime);
} @Test
public void test05() throws ParseException {
Date date = new Date();
String today = DateUtils.formatToString(date, "yyyy-MM-dd");
String thisMonth = DateUtils.formatToString(date, "yyyy-MM");
List<MVip> list = mongoTemplate.find(
Query.query(
Criteria.where("day").is("2018-03-28")
), MVip.class);
System.out.println(list.size());
} @Test
public void test06() {
Date date = new Date();
String today = DateUtils.formatToString(date, "yyyy-MM-dd");
String thisMonth = DateUtils.formatToString(date, "yyyy-MM");
Double sum = 0.0;
List<MBalanceIncrease> list = mongoTemplate.find(
Query.query(
Criteria.where("day").is("2018-03-28")
), MBalanceIncrease.class);
for (MBalanceIncrease balance : list) {
sum = new BigDecimal(sum).add(new BigDecimal(balance.getAmount().toString())).doubleValue();
} DecimalFormat decimalFormat = new DecimalFormat("#.00");
sum = Double.valueOf(decimalFormat.format(sum));
System.out.println(sum);
} @Test
public void test07() {
Date date = new Date();
String today = DateUtils.formatToString(date, "yyyy-MM-dd");
String thisMonth = DateUtils.formatToString(date, "yyyy-MM");
Double sum = 0.0;
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("day").in(DateUtils.getPast7Date())),
group("day")
.sum("amount").as("total")
//.push("createDate").as("date")
.first("day").as("day"),
project("total", "day"),
sort(Sort.Direction.DESC, "day"));
AggregationResults<BasicDBObject> outputTypeCount =
mongoTemplate.aggregate(aggregation, MBalanceIncrease.class, BasicDBObject.class); for (Iterator<BasicDBObject> iterator = outputTypeCount.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
System.out.println(obj);
}
} @Test
public void test08() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("day").is("2018-08-16")),
group("day").sum("amount").as("total"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MBalanceIncrease.class, BasicDBObject.class); System.out.println(result.getMappedResults().get(0).get("total"));
} @Test
public void test09() {
List<String> past7Date = DateUtils.getPast7Date();
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("day").in(past7Date)),
group("day")
.sum("amount").as("total")
.first("day").as("day"),
project("total", "day"),
sort(Sort.Direction.DESC, "day"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MBalanceIncrease.class, BasicDBObject.class); List<AmountChart> sevenDays = new ArrayList<>();
Map<String, Double> map = new HashMap<>();
for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
map.put(obj.get("day").toString(), Double.valueOf(obj.get("total").toString()));
} for (String day : past7Date) {
if (map.containsKey(day)) {
sevenDays.add(new AmountChart(day, map.get(day)));
} else {
sevenDays.add(new AmountChart(day, 0.0));
}
} System.out.println(sevenDays);
AmountChart amountChart = sevenDays.get(0);
System.out.println(amountChart);
} @Test
public void test10() {
List<String> past6Months = DateUtils.getPast6Months();
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("month").in(past6Months)),
group("month")
.sum("amount").as("total")
.first("month").as("month"),
project("total", "month"),
sort(Sort.Direction.DESC, "month"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MBalanceIncrease.class, BasicDBObject.class); List<AmountChart> sixMonths = new ArrayList<>();
Map<String, Double> map = new HashMap<>();
for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
map.put(obj.get("month").toString(), Double.valueOf(obj.get("total").toString()));
} for (String month : past6Months) {
if (map.containsKey(month)) {
sixMonths.add(new AmountChart(month, map.get(month)));
} else {
sixMonths.add(new AmountChart(month, 0.0));
}
} System.out.println(sixMonths);
AmountChart monthAmount = sixMonths.get(0);
System.out.println(monthAmount);
} @Test
public void test11() {
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("province").is("江苏")),
group("province").sum("amount").as("total"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, com.tangzhe.shop.service.MOrder.class, BasicDBObject.class); System.out.println(result.getMappedResults().get(0).get("total"));
} @Test
public void test12() {
// 查询当日 老方法
List<MVip> list = mongoTemplate.find(
Query.query(
Criteria.where("province").is("江苏").and("day").is("2018-08-16")
), MVip.class);
System.out.println(list.size()); // 查询当日 新方法
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("province").is("江苏").and("day").is("2018-08-16")),
group("province").count().as("total"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MVip.class, BasicDBObject.class); for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
System.out.println(obj);
}
System.out.println(result.getMappedResults().get(0).get("total"));
} @Test
public void test13() {
// 查询近7日 老方法
List<VipChart> sevenDays = new ArrayList<>();
List<String> past6Date = DateUtils.getPast7Date();
for (String day : past6Date) {
int dc = mongoTemplate.find(
Query.query(
Criteria.where("province").is("江苏").and("day").is(day)
), MVip.class).size();
VipChart vipChart = new VipChart(day, dc);
sevenDays.add(vipChart);
}
sevenDays.forEach(System.out::println); // 查询近7日 新方法
List<String> past7Date = DateUtils.getPast7Date();
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("province").is("江苏").and("day").in(past7Date)),
group("day")
.count().as("total")
.first("day").as("day"),
project("total", "day"),
sort(Sort.Direction.DESC, "day"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MVip.class, BasicDBObject.class); for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
System.out.println(obj);
}
} @Test
public void test14() {
// 查询累计 老方法
int total = mongoTemplate.find(
Query.query(
Criteria.where("city").is("苏州")
), MVip.class).size();
System.out.println(total); // 查询累计 新方法
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("city").is("苏州")),
group("province").count().as("total"));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MVip.class, BasicDBObject.class);
total = Integer.valueOf(result.getMappedResults().get(0).get("total").toString());
System.out.println(total);
} @Test
public void test15() {
Map<String, Integer> map = new HashMap<>();
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("province").is("江苏")),
group("city").count().as("total"));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MVip.class, BasicDBObject.class);
for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
System.out.println(obj);
map.put(obj.get("_id").toString(), Integer.valueOf(obj.get("total").toString()));
}
System.out.println();
} /**
* 关联查询
*/
@Test
public void test16() {
Instant start = Instant.now();
Aggregation aggregation = Aggregation.newAggregation(
match(
Criteria.where("id").is("5b7a5fa1d0c5852d745c4e81")),
lookup("class_info", "classId", "_id", "class_info")
);
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, Student.class, BasicDBObject.class);
for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
System.out.println(obj);
}
Instant end = Instant.now();
System.out.println(Duration.between(start, end).toMillis());
} @Test
public void test17() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("province").is("江苏")),
group("userId").count().as("total").push("city").as("city"),
match(Criteria.where("total").gte(2)),
project("total", "city"));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MCustomerSave.class, BasicDBObject.class);
int total = result.getMappedResults().size();
System.out.println(total);
} @Test
public void test18() {
Map<String, Integer> map = new HashMap<>();
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("province").is("江苏")),
group("city").count().as("total"));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MCustomerSave.class, BasicDBObject.class);
for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
String city = obj.get("_id").toString();
aggregation = Aggregation.newAggregation(
match(Criteria.where("city").is(city)),
group("userId").count().as("total"),
match(Criteria.where("total").gte(2)));
AggregationResults<BasicDBObject> res = mongoTemplate.aggregate(aggregation, MCustomerSave.class, BasicDBObject.class);
map.put(city, res.getMappedResults().size());
}
System.out.println();
} }
 package com.tangzhe.mongodb.mongotemplate;

 import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.tangzhe.mongodb.BaseTest;
import com.tangzhe.shop.document.MOrder;
import com.tangzhe.shop.document.MUser;
import com.tangzhe.shop.document.MVipRecord;
import com.tangzhe.shop.service.Product;
import com.tangzhe.test.util.DateUtils;
import org.bson.types.Decimal128;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria; import java.math.BigDecimal;
import java.time.Duration;
import java.time.Instant;
import java.util.*; import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; public class ShopTest extends BaseTest { @Autowired
private MongoTemplate mongoTemplate; /**
* 一共获取了多少食堂劵
*/
@Test
public void test01() {
Instant start = Instant.now(); Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
unwind("productList"),
group("userId").sum("productList.ticket").as("total"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class);
System.out.println(result.getMappedResults().get(0).get("total")); Instant end = Instant.now();
System.out.println(Duration.between(start, end).toMillis());
} /**
* 一共节约了多少钱
*/
@Test
public void test02() {
Instant start = Instant.now(); Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
group("userId")
.sum("orgAmount").as("orgAmount")
.sum("payAmount").as("payAmount"),
project("orgAmount", "payAmount")
.and("orgAmount").minus("payAmount").as("saveAmount"));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); BigDecimal saveAmount = ((Decimal128)result.getMappedResults().get(0).get("saveAmount")).bigDecimalValue();
System.out.println(saveAmount); Instant end = Instant.now();
System.out.println(Duration.between(start, end).toMillis());
} /**
* 一共支付了多少钱
*/
@Test
public void test03() {
Instant start = Instant.now(); Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
group("userId").sum("payAmount").as("total"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); System.out.println(result.getMappedResults().get(0).get("total")); Instant end = Instant.now();
System.out.println(Duration.between(start, end).toMillis());
} /**
* 下单总共原始价多少钱
*/
@Test
public void test04() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
group("userId").sum("orgAmount").as("total"));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); BigDecimal orgAmount = ((Decimal128) result.getMappedResults().get(0).get("total")).bigDecimalValue();
System.out.println(orgAmount);
} /**
* 交易的产品比例(含产品类型和比例)
*/
@Test
public void test05() {
Instant start = Instant.now(); Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
project("productList"));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); int sum = 0;
for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
List<Product> products = (List<Product>) obj.get("productList");
sum += products.size();
} aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
unwind("productList"),
group("productList.productType").count().as("total"));
result = mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); Map<String, BigDecimal> rateMap = new HashMap<>();
int i = 0;
BigDecimal other = new BigDecimal(0);
for (Iterator<BasicDBObject> iterator = result.iterator(); iterator.hasNext(); ) {
DBObject obj = iterator.next();
if (i == 6) {
rateMap.put((String)obj.get("_id"), new BigDecimal(1).subtract(other));
break;
}
BigDecimal rate = new BigDecimal((int)obj.get("total")).divide(new BigDecimal(sum));
rateMap.put((String)obj.get("_id"), rate);
other = other.add(rate);
i ++;
} Instant end = Instant.now();
System.out.println(Duration.between(start, end).toMillis());
} /**
* 一共下了多少单
*/
@Test
public void test06() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
group("userId").count().as("count"));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); int count = (int) result.getMappedResults().get(0).get("count");
System.out.println(count);
} /**
* 最喜欢的店铺(即下单最多的店铺)
*/
@Test
public void test07() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
group("shopId").count().as("count"),
sort(Sort.Direction.DESC, "count"),
limit(1));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); long shopId = (long) result.getMappedResults().get(0).get("_id");
int count = (int) result.getMappedResults().get(0).get("count");
System.out.println(shopId);
System.out.println(count);
} /**
* 下单最多的那天和下单数量
*/
@Test
public void test08() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
project().andExpression("{$dateToString:{format:'%Y-%m-%d',date: '$createTime'}}").as("createTime"),
group("createTime").count().as("count"),
sort(Sort.Direction.DESC, "count"),
limit(1));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class);
String day = (String) result.getMappedResults().get(0).get("_id");
int count = (int) result.getMappedResults().get(0).get("count");
System.out.println(day);
System.out.println(count);
} /**
* 花费金额最多的那天和金额
*/
@Test
public void test09() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)
.and("createTime").gte(DateUtils.fromString("2018-01-01 16:00:57", "yyyy-MM-dd HH:mm:ss")).lte(new Date())),
project("payAmount").andExpression("{$dateToString:{format:'%Y-%m-%d',date: '$createTime'}}").as("createTime"),
group("createTime").sum("payAmount").as("total"),
sort(Sort.Direction.DESC, "total"),
limit(1));
AggregationResults<BasicDBObject> result =
mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class);
String day = (String) result.getMappedResults().get(0).get("_id");
BigDecimal amount = ((Decimal128)result.getMappedResults().get(0).get("total")).bigDecimalValue();
System.out.println(day);
System.out.println(amount);
} /**
* 前3笔最多消费
*/
@Test
public void test10() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
sort(Sort.Direction.DESC, "payAmount"),
limit(3));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class); List<MOrder> orders = new ArrayList<>(3); for (BasicDBObject bd : result.getMappedResults()) {
MOrder order = new MOrder();
order.setOrderId(bd.getString("orderId"));
order.setPayAmount((Decimal128) bd.get("payAmount"));
order.setShopId(bd.getLong("shopId"));
order.setCreateTime(bd.getDate("createTime"));
orders.add(order);
}
System.out.println(orders);
} /**
* 第一笔交易信息
*/
@Test
public void test11() {
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(8744L)),
sort(Sort.Direction.ASC, "createTime"),
limit(1));
AggregationResults<BasicDBObject> result = mongoTemplate.aggregate(aggregation, MOrder.class, BasicDBObject.class);
BasicDBObject bd = result.getMappedResults().get(0);
MOrder order = new MOrder();
order.setOrderId(bd.getString("orderId"));
order.setPayAmount((Decimal128) bd.get("payAmount"));
order.setShopId(bd.getLong("shopId"));
order.setCreateTime(bd.getDate("createTime"));
System.out.println("第一笔交易时间为 " + DateUtils.formatToString(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
System.out.println("第一笔交易金额为 " + order.getPayAmount().bigDecimalValue().setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("第一笔交易商家id为 " + order.getShopId());
System.out.println("第一笔交易订单号为 " + order.getOrderId());
} /**
* 查询成为会员的时间和第几位会员
*/
@Test
public void test12() {
Long userId = 1L; Aggregation agg = Aggregation.newAggregation(
match(
Criteria.where("userId").is(userId)
.and("afterUserType").is("FORMAL_VIP")),
sort(Sort.Direction.ASC, "startTime"),
limit(1));
AggregationResults<BasicDBObject> result1 = mongoTemplate.aggregate(agg, MVipRecord.class, BasicDBObject.class); agg = Aggregation.newAggregation(
match(
Criteria.where("startTime")
.lt(result1.getMappedResults().get(0).getDate("startTime"))));
AggregationResults<BasicDBObject> result2 = mongoTemplate.aggregate(agg, MVipRecord.class, BasicDBObject.class);
int count = result2.getMappedResults().size() + 1;
System.out.println("您成为会员的时间:" + DateUtils.formatToString(result1.getMappedResults().get(0).getDate("startTime"), "yyyy-MM-dd hh:mm:ss"));
System.out.println("您是第" + count + "位会员");
} /**
* 查询注册时间和是第几位用户
*/
@Test
public void test13() {
Instant start = Instant.now();
Long userId = 1L;
Aggregation agg = Aggregation.newAggregation(
match(Criteria.where("userId").is(userId)));
AggregationResults<BasicDBObject> result1 = mongoTemplate.aggregate(agg, MUser.class, BasicDBObject.class);
agg = Aggregation.newAggregation(
match(
Criteria.where("createTime")
.lt(result1.getMappedResults().get(0).getDate("createTime"))),
project("userId"));
AggregationResults<BasicDBObject> result2 = mongoTemplate.aggregate(agg, MUser.class, BasicDBObject.class);
int count = result2.getMappedResults().size() + 1;
System.out.println("您成为用户的时间:" + DateUtils.formatToString(result1.getMappedResults().get(0).getDate("createTime"), "yyyy-MM-dd hh:mm:ss"));
System.out.println("您是第" + count + "位注册用户");
Instant end = Instant.now();
System.out.println(Duration.between(start, end).toMillis());
} }

最新文章

  1. 解决ViewPage中嵌套有ListView或者滑动手势等造成滑动的冲突
  2. SQL Server 2012 学习笔记4
  3. 最近写了一个红包雨的小功能,但感觉自己的js还有很多地方可以提高,望大神们可以帮忙指点一二
  4. 【C#学习笔记】载入图片并居中
  5. WSGI和PASTE
  6. 【技术贴】第二篇 :解决使用maven jetty启动后无法加载修改过后的静态资源
  7. 实用bootstrap 表格控件
  8. sql server 2008 设计时 不允许保存更改
  9. how to use the curses library in unix?
  10. 使用JConsole以及VisualVM进行jvm程序的监控,排错,调优
  11. 【Appium】Appium工作原理(2)
  12. 前端vue框架 脚手架
  13. Fiddler抓包使用教程-基本功能介绍
  14. RDMA技术解析
  15. FatTree拓扑结构
  16. 7.Deque的应用案例-回文检查
  17. git 创建空提交
  18. jconsole监控远程linux tomcat运行情况的配置 (转)
  19. webservice(草稿)
  20. 在Xcode4.5中禁用ARC(Automatic Referencing Counting) 转

热门文章

  1. servlet和jsp存值和取值的方式
  2. pandas:数据分析
  3. Apache Spark 2.2.0 中文文档 - Structured Streaming 编程指南 | ApacheCN
  4. centOS7虚拟机和本机ping通
  5. cms-友情链接实现静态化
  6. TP5.0:的安装与配置
  7. Windows 服务快捷启动命令,可以直接在运行处运行电脑的功能。
  8. Euerka环境搭建
  9. log4j.properties中的这句话“log4j.logger.org.hibernate.SQL=DEBUG ”该怎么写在log4j.xml里面呢?
  10. codeforces 600A Extract Numbers