2

次のクエリを返す:MongoDBの集合は、常に0の値

[{ 
      $match: { 
       $and: [ 
        {campaignID: "12345"}, 
        {date: "2016-10-18"}, 
        {hour: {$gte: 0}}, 
        {hour: {$lte: 3}} 
       ] 
      } 
     } 
}] 

は、以下の(正しい)データを返す:

[{"_id":"580638b1e4b01c1a027e82c1","campaignID":"12345","date":"2016-10-18", 
"hour":0,"foo":10,"bar":10}, 
{"_id":"580638cbe4b01c1a027e82c2","campaignID":"12345","date":"2016-10-18", 
"hour":1,"foo":11,"bar":11}, 
{"_id":"580638e5e4b01c1a027e82c3","campaignID":"12345","date":"2016-10-18", 
"hour":2,"foo":12,"bar":12}, 
{"_id":"580638efe4b01c1a027e82c4","campaignID":"12345","date":"2016-10-18", 
"hour":3,"foo":13,"bar":13}] 

しかし、次のクエリ:

[ 
     { 
      $match: { 
       $and: [ 
        {campaignID: "12345"}, 
        {date: "2016-10-18"}, 
        {hour: {$gte: 0}}, 
        {hour: {$lte: 3}} 
       ] 
      } 
     }, 
     { 
      $group: { 
       _id: campaignID, 
       foo:{$sum: "foo"}, 
       bar:{$sum: "bar"} 
      } 
     } 
] 

は、以下を返します(間違った)データ:

[{"_id":"sA48VsoQyuuEDVI5lr4loL31mqoCRT","foo":0,"bar":0}] 
どちらも 'FOO' と 'バー' が46(10 + 11 + 12 + 13)ことになっている

私が間違って何をしているのですか?

+1

ご迷惑をおかけして申し訳ありません。 「mongodb集約は常に0の値を返す」のようなものが良いでしょう。 –

答えて

3

その値を参照するには、フィールド名に$を使用する必要があります。

$group: { 
    _id: "$campaignID", 
    foo:{$sum: "$foo"}, 
    bar:{$sum: "$bar"} 
} 
関連する問題