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

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


db.collection.aggregate(

   [

      {

         $match: { _id: 123456789 }

      },

      {

         $project: {

            count: { $size: "$foos" }

         }

      }

   ]

)

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


慕村9548890
浏览 153回答 2
2回答

潇潇雨雨

不,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));

慕桂英4014372

您可以创建一个新字段并将数组的大小放入其中并将其用于计数或排序。使用“addFields”java 助手addFields(new Field("productsCount",             new Document("$size", "$products")));在哪里' productsCount ' 是新字段的名称“产品”是数组' $size ' 是 MongoDB 聚合。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java