簡體   English   中英

MongoDB 如何使用 Java 驅動程序計算數組元素

[英]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")));

在哪里

  1. ' productsCount ' 是新字段的名稱
  2. 產品”是數組
  3. ' $size ' 是 MongoDB 聚合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM