java mongodb aggregate.group 去重统计
时间: 2023-07-01 11:18:01 浏览: 215
你可以使用MongoDB的聚合框架来进行去重统计。下面是一个Java实现的例子:
```java
import com.mongodb.MongoClient;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import static com.mongodb.client.model.Accumulators.*;
import static com.mongodb.client.model.Aggregates.*;
import static com.mongodb.client.model.Filters.*;
import org.bson.Document;
public class DistinctCountExample {
public static void main(String[] args) {
// 连接MongoDB
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 获取数据库
MongoDatabase database = mongoClient.getDatabase("mydb");
// 获取集合
MongoCollection<Document> collection = database.getCollection("mycollection");
// 聚合查询
AggregateIterable<Document> iterable = collection.aggregate(
Arrays.asList(
// 分组统计去重后的数量
group("$field1",
sum("count", 1)),
// 投影出结果
project(fields(excludeId(), include("field1", "count")))
)
);
// 输出结果
for (Document document : iterable) {
System.out.println(document.toJson());
}
// 关闭连接
mongoClient.close();
}
}
```
这个例子中,我们使用了MongoDB的聚合框架来进行去重统计。首先,我们使用`group`操作符对`field1`字段进行分组,并使用`sum`操作符来统计每个分组中元素的数量。然后,我们使用`project`操作符来投影出结果集,包含`field1`字段和去重后的`count`字段,即每个元素在`field1`字段中出现的次数。最终得到去重后的统计结果。
阅读全文