1

During a recent training, I learned about the benefits of using the $searchoperator. I would like to modify my $match query to use $search instead. However, I couldn't find an equivalent for the $in operator.

When the fields need to match a single ObjectId, there is no problem, I can use the compound operator with must + equals and it works.

The problem arises when I have multiple ObjectId values. Again, if it's only for one field, I could use should + equals while specifying minimumShouldMatch: 1.

But I'm not sure how to handle it if I have multiple fields with multiple ObjectId values... How should I approach transforming a query like this using the $search operator?

 { '$match':
     { '$and':
        [ { customer:
             { '$in': [ 5f3d6c51f5b2ed74fe93dd60, 5c221b4e4d17f1734806b4a5 ] } },
          { carrier: { '$in': [ 'carrier1', 'carrier2', 'carrier3' ] } },
          { status: { '$in': [ 'late', 'idle', 'delivered-late' ] } },
          { createDate: { '$gte': 2023-06-01T04:00:00.000Z } },
          { createDate: { '$lte': 2023-07-01T03:59:59.999Z } } ] } 
}
MLR
  • 23
  • 5

0 Answers0