MongoDB : Comment interroger avec « Like » Expression régulière
Vous pouvez utiliser les méthodes suivantes pour effectuer une requête dans MongoDB avec une expression régulière « like » :
Méthode 1 : rechercher des documents contenant une chaîne
db.collection.find({name: {$regex : /string/i}})
Notez que le i indique une correspondance insensible à la casse.
Méthode 2 : rechercher des documents commençant par une chaîne
db.collection.find({name: {$regex : /^string/i}})
Méthode 3 : rechercher des documents se terminant par une chaîne
db.collection.find({name: {$regex : /string$/i}})
Les exemples suivants montrent comment utiliser chaque méthode avec une équipe de collecte avec les documents suivants :
db.teams.insertOne({team: "Mavs", position: "Guard", points: 31}) db.teams.insertOne({team: "Spurs", position: "Guard", points: 22}) db.teams.insertOne({team: "Rockets", position: "Center", points: 19}) db.teams.insertOne({team: "Warriors", position: "Forward", points: 26}) db.teams.insertOne({team: "Cavs", position: "Guard", points: 33})
Exemple 1 : rechercher des documents contenant une chaîne
Nous pouvons utiliser le code suivant pour rechercher tous les documents contenant la chaîne « avs » dans le champ équipe :
db.teams.find({team: {$regex : /avs/i}})
Cette requête renvoie les deux documents suivants :
{ _id: ObjectId("618050098ffcfe76d07b1da5"), team: 'Mavs', position: 'Guard', points: 31 } { _id: ObjectId("618285361a42e92ac9ccd2c6"), team: 'Cavs', position: 'Guard', points: 33 }
Exemple 2 : rechercher des documents commençant par une chaîne
Nous pouvons utiliser le code suivant pour rechercher tous les documents commençant par la chaîne « gua » dans le champ de position :
db.teams.find({position: {$regex : /^gua/i}})
Cette requête renvoie les trois documents suivants :
{ _id: ObjectId("618050098ffcfe76d07b1da5"), team: 'Mavs', position: 'Guard', points: 31 } { _id: ObjectId("6180504e8ffcfe76d07b1da7"), team: 'Spurs', position: 'Guard', points: 22 } { _id: ObjectId("618285361a42e92ac9ccd2c6"), team: 'Cavs', position: 'Guard', points: 33 }
Exemple 3 : rechercher des documents se terminant par une chaîne
Nous pouvons utiliser le code suivant pour rechercher tous les documents qui se terminent par la chaîne « ward » dans le champ de position :
db.teams.find({position: {$regex : /ward$/i}})
Cette requête renvoie le document suivant :
{ _id: ObjectId("618050808ffcfe76d07b1dab"), team: 'Warriors', position: 'Forward', points: 26 }
Remarque : Vous pouvez trouver la documentation complète pour $regex ici .