Ashok Kumar Sahoo
Ashok Kumar Sahoo

Reputation: 580

Mongoose Query with where

I have a mongoose query which finds all the rewards which a user got and not yet redeemed.

Reward.find({user: user, redeemed: false}).exec(callback)

I want to change it to all the rewards which are not redeemed, and the rewards which are redeemed today. Is this the right way to go.

Reward.find({user:user})
      .where('redeemed').equals('false')
      .where('redeemed').equals('true').gt(yesterday)
      .exec(callback)

Upvotes: 1

Views: 189

Answers (1)

Prakash
Prakash

Reputation: 823

You need to use an or query

Reward.find({
  user:user
  $or:[{
        redeemed: false
    },
    {
        redeemed: true
        redeemed_date: {
            $gt : yesterday
        }
    }]
  }, callback)

For a better readability you can use or as a promise

    Reward.find({user:user})
      .or([{redeemed: false},
        {
            redeemed: true,
            redeemed_date: {
                $gt : yesterday
            }
        }])
      .exec(callback)

Upvotes: 1

Related Questions