簡體   English   中英

Spring Data等效於聚合查詢

[英]Spring Data equivalent of aggregation query

我很難弄清楚如何為下面的聚合查詢編寫spring數據實現。 我的問題的一些背景可以在這里找到

db.asset.aggregate([{$unwind:"$folderIds"},  {$group:{_id: "$folderIds",assets:{$push: {assets_id:"$_id",display_name:"$displayName"}}}}])

到目前為止,我已經獲得了以下代碼

AggregationOperation unwind = Aggregation.unwind("folderIds");
AggregationOperation groupFolderIds = Aggregation.group("folderIds")
            .push(new BasicDBObject().put("assetId", "$_id")).as("assets");
Aggregation aggregation = Aggregation.newAggregation(unwind, groupFolderIds);
AggregationResults<Map> results = mongoTemplate.aggregate(aggregation, "asset", Map.class);

我知道.push()的參數必須固定,但我不知道如何。 我想在結果中從資產文檔中提取一些字段。 感謝幫助。 謝謝。

如果要向$push提供BasicDBObject,請使用.append方法添加其他字段:

    Aggregation aggregation = newAggregation(
            unwind("folderIds"),
            group("folderIds")
                .push(
                    new BasicDBObject("assets_id","$_id")
                     .append("display_name","$displayName")
                ).as("assets")
    );

另請注意,在使用“類型化”輸出時,您使用的類類型必須與“輸出”的結構相匹配,而不是與正在使用的“輸入”類的結構相匹配,因為它們當然會有所不同。

暫無
暫無

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

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