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 ?
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"
}
})
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 [];
});