2015-09-24 33 views
0

我有以下格式的mongodb数据。我在下面给出了两行我名为'feed'的表的mongodb数据。如何按给定格式对以下数据进行mongodb分组的结果

{

"_id" : ObjectId("55e80a725ae35bbfc6dce074"), 
"sourceId" : "12345", 
"sourceName" : "MyPage", 
"channelId" : "67890", 
"channelName" : "Facebook", 
"likeCount" : 1, 
"feedData" : { 
    "from" : { 
     "id" : "416992615172913", 
     "name" : "Ashish Kumar" 
    }, 
    "created_time" : "2015-08-04T09:54:39+0000", 
}, 
"sentiment" : "neutral", 

}

{

"_id" : ObjectId("55e80a725ae35bbfc6dce074"), 
"sourceId" : "23456", 
"sourceName" : "YourPage", 
"channelId" : "67890", 
"channelName" : "Facebook", 
"likeCount" : 2, 
"feedData" : { 
    "from" : { 
     "id" : "416992615172913", 
     "name" : "Ashish Kumar" 
    }, 
    "created_time" : "2015-08-04T09:54:39+0000", 
}, 
"sentiment" : "positive", 

}

我想在字段feedData.from.id执行GROUPBY其中CHANNELNAME等于'Facebook的,相似计数的总和,数组中的所有来源,数组中的所有情绪。我希望使用spring mongo以下面给出的格式与feedData.from.id相关联的所有数据。

{

“feedDatafromid”: “416992615172913”,

“名称”: “与Ashish库马尔”,

“SOURCENAME”:[ “我的页面”, “YourPage”],

“信道”: “脸谱”,

“likeCount”:3,

“S entiment”:‘中性’,‘积极’]

}

有人可以帮我写在java中春代码组的MongoDB的数据中给出的方式。

回答

0

假设我们有FeedDbBean类来保存聚合结果。 (“commentCount”).as(“commentCount”).as(“commentCount”).addToSet(“)”作为(“likeCount”)。 SOURCENAME “)。如(” SOURCENAME “)。addToSet(” 的SourceID “)。如(” 的SourceID “)。addToSet(” 情绪 “)。如(” 情绪 “)。addToSet(” 的channelID “)。如(” 的channelID “).addToSet(” CHANNELNAME CHANNELNAME “)addToSet(userIdKey)。如(” postUserId “)addToSet(userNameKey)。如(” postUserName“)) ”)作为(“;

results = mongoTemplate.aggregate(agg,FEED_COLLECTION_NAME,FeedDbBean.class);

if(null!= results) List feedList = results.getMappedResults();

...................

因此,使用给定的代码代表userIdKey的结果将被存储在FeedDbBean的列表。

每个FeedDbBean对象将具有如下方式的属性。

feedDbBean.userId =(用户id)

feedDbBean.userName =(用户名)

feedDbBean。likeCount =(像数组的总和用户id)

feedDbBean.commentCount =(评论数GROUPBY用户ID的总和)

feedDbBean.sourceName =(都是唯一的源名称由用户标识显示用逗号分隔此组)

feedDbBean.sentiment =(用逗号分隔的所有情感用户标识)

相关问题