17

比較的単純なシナリオ:

(タイプの)プロパティを持つこのVoucherオブジェクトがあります。1 人のユーザーのすべてのバウチャーの値の合計を取得したいと考えています。空の配列を返す私の現在の戦略は次のとおりです。userObjectId

Voucher.aggregate [
    { $match : { user : new ObjectId(user_id), expires : { $gt : new Date() } } }
    { $group : { _id : null, sum : { $sum : '$value' } } }
], (err, result)->

    console.log err
    console.log result

IDの一致を削除しuser、フィールドを離れるとexpires結果が返されます。それで、問題は、上の一致の何が問題なのuserですか?

4

4 に答える 4

20

When using the find method or findById the query can be only:

var query = {
    $or: [
        {'_sender':req.body._id},
        {'_recipient':req.body._id}
    ]
};

When using aggregate the query need a cast

var mongoose = require('mongoose');
var query = {
    $or: [
        {'_sender':new mongoose.Types.ObjectId(decoded._id)},
        {'_recipient':new mongoose.Types.ObjectId(decoded._id)}
    ]
};
于 2015-03-01T17:20:12.550 に答える
14
var aggregate  = [
{
                $match: {
                    'lenderId': new mongoose.Types.ObjectId(req.user),
                    '_disbursed': true
                }
            },
            {
                $unwind:'$emi'
            },
            {
                $match: {
                    'emi._settled': false,
                }
            }
];
于 2017-05-19T08:29:15.410 に答える