0

次の Mongodb クエリでは、「正しい」と「guessCount」の $divide 式で「未定義」を取得しています。これを修正するにはどうすればよいですか? 私の意図は、正しい推測の合計を推測の数で割った結果である「精度」というラベルの付いたパーセンテージを返すことです。これは、提供されたコードからかなり明確になるはずです。

guessCollection.aggregate( { $group :
                     { _id : "$imageFileName",
                       correct : { $sum : "$correct" },
                       guessCount: {$sum: 1 },
                       accuracy: {$divide: [correct, guessCount]}, //guess and guessCount are undefined
                        } },
                   { $match : {guessCount : { $gte : 50 }, user: user, language: language } } ,
                   { $sort: { guessCount: -1 } }, callback)
4

1 に答える 1

3

$divide$project演算子ではなく$group演算子であるため、代わりに次のようにする必要があります。

guessCollection.aggregate( { $group :
    { _id : "$imageFileName",
       correct : { $sum : "$correct" },
       guessCount: {$sum: 1 }
    } },
    { $match : {guessCount : { $gte : 50 }, user: user, language: language } } ,
    { $project : {
        correct: 1,
        guessCount: 1,
        accuracy: {$divide: ['$correct', '$guessCount']}
    }},
    { $sort: { guessCount: -1 } }, callback)

あなたの次の問題は、あなたのとフィールドを参照している可能性がlanguage高いuserです.$match$group

guessCollection.aggregate(
    { $match : { user: user, language: language } } ,
    { $group : { 
        _id : "$imageFileName",
        correct : { $sum : "$correct" },
        guessCount: {$sum: 1 }
    } },
    { $match : {guessCount : { $gte : 50 } } } ,
    { $project : {
        correct: 1,
        guessCount: 1,
        accuracy: {$divide: ['$correct', '$guessCount']}
    }},
    { $sort: { guessCount: -1 } }, callback)
于 2012-12-15T21:15:16.297 に答える