Spring Data等价于聚合查询

时间:2015-10-15 03:38:59

标签: java mongodb mongodb-query aggregation-framework spring-data-mongodb

我很难弄清楚如何为下面的聚合查询编写spring数据实现。我的问题的一些背景可以找到here

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()的论点必须修复,但我不知道如何。我想从结果中的资产文档中提取一些字段。感谢帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

如果要向var array = [["Chinese"],["Italian"],["Thai"]] var valArray: [String] = [] for value in array { for innerValue in value { valArray.append(innerValue) } } print(valArray) 提供BasicDBObject,请使用$push方法添加其他字段:

.append

使用&#34;键入&#34>时也要注意输出,您使用的类类型必须匹配&#34;输出&#34;的结构。而不是&#34;输入&#34;正在使用的课程当然会有所不同。