gpt4 book ai didi

java - Spring Data Mongo 模板 - 对数组进行计数

转载 作者:可可西里 更新时间:2023-11-01 09:12:58 25 4
gpt4 key购买 nike

Mongo 文档:

{
"_id" : "1",
"array" : [
{
"item" : "item"
},
{
"item" : "item"
}
]
}

我的 mongo shell 查询 如下所示:

db.getCollection('collectionName').aggregate(
{$match: { _id: "1"}},
{$project: { count: { $size:"$array" }}}
)

有没有办法使用 Spring 的 Mongo 模板 来实现这个?

到目前为止我有这个:

MatchOperation match = new MatchOperation(Criteria.where("_id").is("1"));
ProjectionOperation project = new ProjectionOperation();
Aggregation aggregate = Aggregation.newAggregation(match, project);
mongoTemplate.aggregate(aggregate, collectionName, Integer.class);

我想我只是缺少 project 逻辑,但我不确定是否可以在这里执行 $size 或等效

最佳答案

很有可能,支持 $size 运算符(参见 DATAMONGO-979 及其实现 here )。您的实现可以遵循以下示例:

import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;

Aggregation agg = new Aggregation(
match(where("_id").is("1")), //
project() //
.and("array") //
.size() //
.as("count")
);

AggregationResults<IntegerCount> results = mongoTemplate.aggregate(
agg, collectionName, Integer.class
);
List<IntegerCount> intCount = results.getMappedResults();

关于java - Spring Data Mongo 模板 - 对数组进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37812893/

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