gpt4 book ai didi

java - 使用 MongoDB java 驱动程序进行聚合

转载 作者:行者123 更新时间:2023-12-01 09:13:59 28 4
gpt4 key购买 nike

我正在使用 MongoDB java 驱动程序 3.2.2 来执行一些聚合操作,但我不确定是否可以通过它实现某些功能。

MongoDB 中的原始查询是:

db.getCollection('report').aggregate({
$group: {
_id: "$company_id",
count: {
$sum: {
$cond: [{
$eq: ["$idcard.status", "normal"]
},0,1]
}
}
}
})

我不知道如何在下面的代码部分中将“$cond”作为 Java 驱动程序中“$sum”运算符的参数:

        AggregateIterable<Document> res = col.aggregate(Arrays.asList(
group("$company_id",
sum("count", ...)
)));

我搜索了official document没有结果,有人有这样做的经验吗?谢谢。

最佳答案

对于 3.x 驱动程序

使用 BsonDocument:类型安全版本

BsonArray cond = new BsonArray();
BsonArray eq = new BsonArray();
eq.add(new BsonString("$idcard.status"));
eq.add(new BsonString("normal"));
cond.add(new BsonDocument("$eq", eq));
cond.add(new BsonInt64(0));
cond.add(new BsonInt64(1));

AggregateIterable<BsonDocument> aggregate = dbCollection.aggregate(Arrays.asList(
group("$company_id",
sum("count", new BsonDocument("$cond", cond))
)));

使用文档 - 代码较少但类型不安全

List cond = new ArrayList();
cond.add(new Document("$eq", Arrays.asList("$idcard.status", "normal")));
cond.add(0);
cond.add(1);

AggregateIterable<Document> aggregate = dbCollection.aggregate(Arrays.asList(
group("$company_id",
sum("count", new Document("$cond", cond))
)));

关于java - 使用 MongoDB java 驱动程序进行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40714393/

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