0

I have mongo db data like this,

{
  "_id": { "$oid": "62bd29431e2e2feca0c53cd2" },
  "inspectionType": "hai2",
  "interval": 1,
  "companyId": { "$oid": "62b4aee8e86962a28632a01a" },
  "createdAt": { "$date": "2022-06-30T04:40:35.946Z" },
  "updatedAt": { "$date": "2022-06-30T04:40:35.946Z" },
  "__v": 0
}

User Input String is : inspection = 'Hai2' Or 'hai2'

I have to find the that document using above the string . I have used below the query but getting empty response.

return db.inspectionCollection
    .find({ inspectionType: inspection, companyId })
    .sort({ updatedAt: -1 })
    .lean(true)
    .catch((err: Error) => {
      logger.error(err);
      return [];
    });

So, What exact query format to getting the documents using string ?

1 Answers1

0

Would suggest using $regex with options "im" which matches with case-insensitive (i) and full string (from start to end) (m).

db.collection.find({
  inspectionType: {
    $regex: "hai2",
    $options: "mi"
  },
  companyId: {
    "$oid": "62b4aee8e86962a28632a01a"
  }
})

Sample Mongo Playground

return db.inspectionCollection
    .find({ 
        inspectionType: {
            $regex: inspection, 
            $options: "im"
        },
        companyId: /* Value with ObjectId type */
    })
    .sort({ updatedAt: -1 })
    .lean(true)
    .catch((err: Error) => {
      logger.error(err);
      return [];
    });
Yong Shun
  • 35,286
  • 4
  • 24
  • 46