[英]How to count elements matching certain condition in array field and insert into projection with MongoDB java driver
[英]MongoDB how to count array elements with Java driver
我需要我的应用程序使用 Java 驱动程序 3.8 计算文档中数组foos
的大小。 我知道我可以用 shell 做到这一点
db.collection.aggregate(
[
{
$match: { _id: 123456789 }
},
{
$project: {
count: { $size: "$foos" }
}
}
]
)
但我不知道如何用 java 来做到这一点,因为我发现生成$size
运算符的唯一方法是Filters.size(String fieldName, int size)
,它旨在查找数组fieldName
具有 size size
文档。 我在 com.mongodb.client.model 包中进行了搜索,但没有找到可以回答我的问题的内容。
不,java 驱动程序中没有帮助程序来帮助$project
阶段的聚合表达式。
尝试
Bson match = new Document("$match", Filters.eq("_id", 123456789 ));
Bson projection = new Document("$size", "$foos" );
Bson project = Aggregates.project(new Document("count", projection) );
collection.aggregate(Arrays.asList(match, project));
您可以创建一个新字段并将数组的大小放入其中并将其用于计数或排序。
使用“addFields”java 助手
addFields(new Field("productsCount",
new Document("$size", "$products")));
在哪里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.