0

次の形式でmongodbにデータがあります。「フィード」という名前のテーブルのmongodbデータの2行の下に表示しました。

{

"_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",

「名前」:「アシッシュ・クマール」、

"sourceName" : ["マイページ","あなたのページ"],

"チャンネル" : "フェイスブック",

"likeCount": 3,

"センチメント" : ["ニュートラル","ポジティブ"]

}

誰かが特定の方法でmongodbのデータをグループ化するためにJava Springでコードを書くのを手伝ってくれますか?

4

1 に答える 1

0

集計結果を保存する FeedDbBean クラスがあるとします。

集約 agg = newAggregation(match(criteria),group(userIdKey).sum("likeCount").as("likeCount").sum("commentCount").as("commentCount").addToSet("sourceName"). as("sourceName").addToSet("sourceId").as("sourceId").addToSet("感情").as("感情").addToSet("channelId").as("channelId").addToSet ("channelName").as("channelName").addToSet(userIdKey).as("postUserId").addToSet(userNameKey).as("postUserName"));

結果 = mongoTemplate.aggregate(agg、FEED_COLLECTION_NAME、FeedDbBean.class);

if(null!=results) リスト feedList = results.getMappedResults();

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

したがって、指定されたコードを使用すると、userIdKey に代わって結果が FeedDbBean のリストに格納されます。

各 FeedDbBean オブジェクトには、次のようなプロパティがあります。

feedDbBean.userId = (ユーザーID)

feedDbBean.userName = (ユーザー名)

feedDbBean.likeCount = (userId ごとのいいね数グループの合計)

feedDbBean.commentCount =(ユーザー ID ごとのコメント数グループの合計)

feedDbBean.sourceName = (ユーザー ID ごとの一意のソース名グループはすべて、カンマで区切られてここに表示されます)

feedDbBean.sentiment = (カンマで区切られたすべての感情は、ユーザー ID ごとにグループ化されます)

于 2015-09-30T11:34:12.920 に答える