MongoDB如何使用Java驱动程序计算数组元素

mar*_*iii 3 java arrays mongodb

foos我需要我的应用程序使用 Java 驱动程序 3.8 来计算文档内数组的大小。我知道我可以用 shell 做到这一点

db.collection.aggregate(
   [
      {
         $match: { _id: 123456789 }
      },
      {
         $project: {
            count: { $size: "$foos" }
         }
      }
   ]
)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何用java来做到这一点,因为$size我发现生成运算符的唯一方法是Filters.size(String fieldName, int size)查找 arrayfieldName具有 size 的文档size。我在 com.mongodb.client.model 包内搜索,但没有找到任何东西可以回答我的问题。

use*_*814 5

不,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));
Run Code Online (Sandbox Code Playgroud)