2017-01-30 10 views
1

私はツイートリストを持っています。このリストには、ツイートID、topicIdTag、タイプの3つのフィールドがあります。タイプには3つの異なる値があります。私は結果を得ていますが、さらに私は各タイプのカウントを取得したいです。私のモデルとクエリコードは以下の通りです。3つの異なる値の合計MongoDb

model : { 
     TopicIdTag : String, 
     TweetId : String, 
     type :String //Positive,negative,neutral 
    }, 

db.collection("myTweets").aggregate([ 
            { 
            $group: { 
             _id: { 
              TopicIdTag : "$TopicIdTag", 
              TweetId : "$TweetId", 
             }, 
             count: { $sum: 1 } 
            } 
            }, 
            { $match: { count: { $gt: 0 , $lt : 5 } } }, 
           // Then sort 
            { "$sort": { "count": -1 } } 
           ], (err, result) => { 
            if (err) { 
             console.log(err); 
            } 
            res.status(200).send(result); 
           }); 

     }); 

この検索条件では、クエリでは、特定のツイートIDに肯定的、否定的、ニュートラル的などれくらいの時間型も返す必要があります。

+0

はあなたに、各タイプのカウントを与える必要がありますが、正直に言うと、私は何が起こっているuderstandとは思わない、なぜあなたはTweetIdによってグループwhould? TweetIdは一意ではありませんか? – lascort

+0

1つのtweetIDに複数のエントリがあります。私はここでスキップしたいくつかの他のエントリがあります –

答えて

0

あなたはtypeを含めるとtypeでカウントし、TopicIdTag & TweetIdによって各typecountと合計カウントごとに1つのエントリを追加し$addtoSetで別のグループを追加するために、既存の$groupを更新することができます。 $のグループステージでタイプを追加

db.collection("tweets").aggregate([{ 
    $group: { 
     _id: { 
      Time: "$Time", 
      TopicIdTag: "$TopicIdTag", 
      TweetId: "$TweetId", 
      TweetText: "$TweetText", 
      UserName: "$UserName", 
      UserScreenname: "$UserScreenname", 
      sentimentNumber: "$sentimentNumber", 
      setimentText: "$setimentText", 
      //user feed back type 
      type: "$type" 
     }, 
     count: { 
      $sum: 1 
     } 
    } 
}, { 
    $group: { 
     _id: { 
      Time: "$_id.Time", 
      TopicIdTag: "$_id.TopicIdTag", 
      TweetId: "$_id.TweetId", 
      TweetText: "$_id.TweetText", 
      UserName: "$_id.UserName", 
      UserScreenname: "$_id.UserScreenname", 
      sentimentNumber: "$_id.sentimentNumber", 
      setimentText: "$_id.setimentText" 
     }, 
     typeAndCount: { 
      $addToSet: { 
       type: "$_id.type", 
       count: "$count" 
      } 
     }, 
     totalCount: { 
      $sum: 1 
     } 
    } 
}, { 
    $match: { 
     totalCount: { 
      $gt: 0, 
      $lt: 5 
     } 
    } 
}]) 
+0

私は空の文字列を取得しています。私は何事かをしているのです。私は私のクエリを更新しました..それを確認してください。 –

+0

答えが更新されました。あなたは最後のグループの '_id'参照を見逃しました。それが動作するかどうかを確認します。 – Veeram

+0

あなたの質問は完璧に働きます。 1つのことはまだtotalCountは、メイングループの実際のカウントではなく、タイプの合計数を与えることです。 (type1 = 11、type2 = 15)の場合、私はexame countの値を24にする必要があります –

関連する問題