基于条件

时间:2017-04-27 23:36:46

标签: mongoose

我有这个简单的架构:

{
    bank: {
            transactions: [
                {
                    notify: Boolean
                }
            ]
    }
}

我只想选择notify flag设置为true的事务, 我尝试了几种使用moongose的方法,但没有用,例如:

 Bank.findById("58efbb1a88efbf2028d2f5a7")
     .where("transactions.notify").equals(true)
     .exec(function (err, tx) {
         console.log(err);
         console.log(res);
         res.json(tx);
     });

Bank.find({_id: "58efbb1a88efbf2028d2f5a7", "transactions": {$elemMatch : {"notify" : true}}},
    function (err, txs) {
        if (err) {
            res.json(err);
        } else {
            res.json(txs);
        }
    });

无论如何使用moongose吗?

2 个答案:

答案 0 :(得分:0)

使用$match$project $filter的聚合:

Bank.aggregate([{
        "$match": {
            "_id": mongoose.Types.ObjectId("58efbb1a88efbf2028d2f5a7")
        }
    }, {
        "$project": {
            "transactions": {
                "$filter": {
                    input: "$bank.transactions",
                    as: 'data',
                    cond: { "$eq": ["$$data.notify", true] }
                }
            }
        }
    }],
    function(err, txs) {
        if (err) {
            res.json(err);
        } else {
            res.json(txs);
        }
    });

答案 1 :(得分:0)

my_word