簡體   English   中英

java mongodb - 獲取數組長度而不下載所有數據

[英]java mongodb - get array length without downloading all data

我正在使用mongodb存儲我的java程序的數據,我有一個數組字段的集合,其中有很多東西,但我只想得到長度,沒有所有其他數據。

現在我用它來得到它:

((UUID[])document.get("customers")).length

我如何才能下載所有陣列?

一個可能的答案是創建一個int來計算數組的推送和拉動,但它不是最干凈的方法。

您正在尋找聚合框架 ,您可以在管道中使用$size運算符,這將計算並返回數組中項目的總數:

db.collection.aggregate([
    {
        "$project": {
            "_id": 0, "customer_count": { "$size": "$customers" }
         }
    }
]);

Java等價物的位置:

DBObject projectFields = new BasicDBObject("_id", 0);
projectFields.put("customer_count", new BasicDBObject( "$size", "$customers" ));
DBObject project = new BasicDBObject("$project", projectFields);

AggregationOutput output = db.getCollection("collectionName").aggregate(project);

System.out.println("\n" + output);

您可以使用MongoDB的聚合框架來獲取數組的大小。 例如,給定以下文檔結構:

> db.macross.findOne()
{
    "_id" : "SDF1",
    "crew" : [
            "Rick",
            "Minmay",
            "Roy",
            "Max",
            "Misa",
            "Milia"
    ]
}

得到數組的大小

> db.macross.aggregate( 
    { $match: { _id: "SDF1" } }, 
    { $unwind: "$crew" }, 
    { $group: { _id: "", count: { $sum: 1 } } }, 
    { $project: { _id: 0, count: 1 } }
)
{ "count" : 6 }

文檔中提供了更詳細和有趣的示例。

暫無
暫無

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

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