[英]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.