2017-02-21 3 views
0

mongoでアグリゲーションフレームワークを使用して1日あたりのリトウとツイートの数をカウントしようとしていますが、私はそれをseparetelyすることができますが、私はクエリを使用してそれをやろうとしたとき、結果は得られません。アグリゲーションフレームワークを使用して1日あたりのツイートとリツイート数をカウントする

私はその日、私はしたい日

db.tweets.aggregate(
     [ 
     { 
      $group: 
      { 
       _id: { 
        day: { $dayOfMonth: "$created_ts"}, 
        month : {$month : "$created_ts" }, 
        year: { $year: "$created_ts" }, 
        }, 
       totalReTweetsPerDay: { $sum: 1 }, 


    } 
    }, 
    {$sort : { _id : -1}}, 
    {$out : "daily_tweets" } 
    ] 
) 

あたりのツイート数を取得するには、次のコードを使用して

db.tweets.aggregate(
    [ 
    { $match: { "retweeted_status.id": {"$exists":true} }} 
    { 
     $group: 
     { 
      _id: { 
       day2: { $dayOfMonth: "$created_ts"}, 
       month2 : {$month : "$created_ts" }, 
       year2: { $year: "$created_ts" }, 
       }, 
      totalReTweetsPerDay: { $sum: 1 }, 
     } 
    }, 
     { $match: { "retweeted_status.id": {"$exists":true} }} 
    ] 
) 

そして私あたりリツイートの数を取得するには、次の集約フレームワークを使用これら2つの操作を1つに結合します。私は他の人の中にそれだけでcopyngに参加しようとしましたが、それは動作していません。

ありがとう、

+1

MongoDBサーバーのバージョンは? – chridam

+0

私はバージョン3.2.4を持っています –

答えて

1

以下の集計を試すことができます。注意すべき唯一のことはフィールドの存在をチェックする演算子のための包含です。

db.tweets.aggregate(
    [{ 
     $group: { 
      _id: { 
       day: { 
        $dayOfMonth: "$created_ts" 
       }, 
       month: { 
        $month: "$created_ts" 
       }, 
       year: { 
        $year: "$created_ts" 
       }, 
      }, 
      totalReTweetsPerDay: { 
       $sum: { 
        $cond: [{ 
         $ifNull: ["$retweeted_status.id", false] 
        }, 1, 0] 
       } 
      }, 
      totalTweetsPerDay: { 
       $sum: 1 
      } 
     } 
    }, { 
     $sort: { 
      _id: -1 
     } 
    }, { 
     $out: "daily_tweets" 
    }] 
) 
+0

こんにちは、それは動作していない、それはコレクションを作成しますが、それはnullです。私のmongoのバージョンは3.2.4です –

+0

'{ $ out:" daily_tweets " }のままにしておけば、 – Veeram

+0

私は何も得ていません。エラーは表示されませんが、結果は得られません。 –

関連する問題