gpt4 book ai didi

java - Java 中的 MongoDB 聚合框架

转载 作者:可可西里 更新时间:2023-11-01 10:05:56 26 4
gpt4 key购买 nike

我有一个 MongoDB 集合,我需要在一个字段中找到每个不同的值,以及每个值出现的次数,有点像 SQL 中的 GROUP BY 和 COUNT 函数。

例如

Item name ------ count

Soap ----------- 7
Apples --------- 4
Tin Foil ------- 5

我是 MongoDB 的新手,并没有真正找到任何可以帮助我解决这个问题的文档。到目前为止,我已经能够返回不同值的列表,但不能返回每个值的计数。

我需要通过 Java MongoDB 库来完成此操作。

最佳答案

db.item.aggregate([
{
$group: {
_id: "$name",
count: {
"$sum": 1
}
}
},
{
$project: {
_id: 0,
name: "$_id",
count: 1
}
}
]).pretty();

一个java实现会是这样

    final MongoClient mongoClient = new MongoClient();
final DB db = mongoClient.getDB("DB_NAME");
final DBCollection collection = db.getCollection("item");

final DBObject groupIdFields = new BasicDBObject("_id", "$name");

groupIdFields.put("count", new BasicDBObject("$sum", 1));
final DBObject group = new BasicDBObject("$group", groupIdFields);

final DBObject projectFields = new BasicDBObject("_id", 0);
projectFields.put("name", "$_id");
projectFields.put("count", 1);
final DBObject project = new BasicDBObject("$project", projectFields);

final AggregationOutput aggregate = collection.aggregate(group, project);

关于java - Java 中的 MongoDB 聚合框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com