填充后不返回数据的条件查询mongo db

时间:2018-11-30 07:19:12

标签: mongodb mongodb-query mongoose-schema

  

我是mongo和node的新手,并且在过滤方面遇到了问题。

     

我有一个客户模式和钱包模式。当我插入新的   客户正在为该客户填充钱包。这个模式   下面是两个模型。

     

Customer.model.js

var Schema = mongoose.Schema;
    const Genders = Object.freeze({
        Male: 'male',
        Female: 'female',
        Other: 'other',
    });


var CustomerSchema = new Schema({
        reg_date: { type: Date, default: Date.now },
        first_name: String,
        last_name: String,
        gender: {
            type: String,
            enum: Object.values(Genders),
        },
        wallet_balance: { type: Number, default: 0 },
        status:{type:Boolean,default:true},
        wallet:{type:mongoose.Schema.Types.ObjectId,ref:'Wallet'},
        customer_rank: String
});
module.exports = mongoose.model('Customer', CustomerSchema);
  

Wallet.model.js

var Schema = mongoose.Schema;
var TransactionSchema = new Schema({
    reason: String,
    deposit_by: Number,
    transaction_type: String,
    transacted_balnace:Number
})
var WalletSchema = new Schema({
    user_id:String,
    transaction_log: [TransactionSchema],
    balance: { type: Number, default: 0 },
    created_at: { type: Date, default: Date.now },
    updated_at: { type: Date, default: Date.now }
});
WalletSchema.plugin(uniqueValidator);
module.exports = mongoose.model('Wallet', WalletSchema);
  

我想根据原因获取客户详细信息。   因此,代码如下。

CustomerModel.find({}, { "password": 0 }).populate({
        path: 'wallet',
        match: { reason: { $in: [ "service charge" ] } },
        select: 'transaction_log'
    }).exec().then(data => {
        if (data) {
            res.status(200).send({ status: true, data: data })
        }
        else {
            res.send({ status: false, data: [] })
        }

    })
  

它不归还钱包,但是如果我删除match属性,   工作正常。如果有解决办法,这将非常有帮助。谢谢   

0 个答案:

没有答案