java mongo 去重_java使用mongoTemplate去重排序查询

本文介绍了在Java中使用MongoTemplate进行数据去重和排序查询的三种方法。第一种方法是通过findDistinct实现去重,但不支持排序;第二种方法使用aggregate进行去重并支持排序,推荐使用;第三种方法与第二种类似,同样实现了去重和排序功能。在实际应用中,可以根据需求选择合适的方法。
摘要由CSDN通过智能技术生成

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.aggregation.TypedAggregation;

第一种,使用mongoTemplate.findDistinct去重,不支持排序,即使你的query条件带sort排序方法。mongoTemplate.findDistinct去重,会使排序失效。优点:查询效率高

缺点:只返回单一字段。不知多字段返回。不能使用排序,不推挤使用

Query query = new Query();

query.addCriteria(Criteria.where("deviceId").is(getListParam.getDeviceId())).with(Sort.by(Sort.Order.desc("startDate")));

List list = mongoTemplate.find(query, RedPacketDeviceRelation.class);

List activeCodes = mongoTemplate.findDistinct(query, "activeCode", "redPacketDeviceRelation",RedPacketDeviceRelation.class, RedPacketDeviceRelation.cla

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java使用 MongoDB 进行条件查询可以使用 `com.mongodb.client.MongoCollection` 的 `find` 方法结合 `com.mongodb.client.model.Filters` 类提供的过滤条件来实现。 以下是一个简单的例子,假设我们有一个名为 `users` 的集合,其中包含了 `name` 和 `age` 两个字段: ```java import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Sorts; import org.bson.Document; import java.util.Arrays; public class MongoDBExample { public static void main(String[] args) { // 创建 MongoDB 客户端 MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); // 获取数据库 MongoDatabase database = mongoClient.getDatabase("test"); // 获取集合 MongoCollection<Document> collection = database.getCollection("users"); // 查询所有文档 collection.find().forEach((Consumer<Document>) document -> System.out.println(document.toJson())); // 按条件查询文档 Document query = new Document(); query.append("age", new Document("$gte", 18)); // 年龄大于等于 18 岁 query.append("name", new Document("$in", Arrays.asList("Alice", "Bob"))); // 名字为 Alice 或 Bob collection.find(query).forEach((Consumer<Document>) document -> System.out.println(document.toJson())); } } ``` 上述代码中,我们使用 `Filters` 类提供的 `$gte` 和 `$in` 条件,查询年龄大于等于 18 岁且名字为 Alice 或 Bob 的文档。 更多的过滤条件可以参考 MongoDB 的官方文档:https://docs.mongodb.com/manual/reference/operator/query/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值