MongoDB 正则表达式 ($regex)2024 年 9 月 6 日 | 阅读 4 分钟 在 MongoDB 中,正则表达式用于模式匹配,这基本上是用于在文档中搜索字符串中的模式。 它是一种将模式与一系列字符匹配的通用方法。 $regex 运算符用作正则表达式,用于在字符串中查找模式。 在 MongoDB 中,我们可以通过两种不同的方式进行模式匹配
使用 $regex 运算符进行模式匹配在 MongoDB 中,$regex 运算符提供了在查询中进行模式匹配的功能。 换句话说,$regex 运算符用于在文档中搜索特定的字符串。 注意:不允许在 $regex 运算符中使用 $in 运算符。语法$选项 以下 <option> 可以与正则表达式一起使用
示例在下面的示例中,我们将使用 >db.student.find() { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d65f"), "name" : "Mick", "Course" : "btech", "batch_year" : 2018, "language" : ["c++", "java", "python"], "personal_details" : { "Father_name" : "Jonny", "phone_no" : 8895321456, "age" : 23, "gender" : "Male", "City" : "NewYork", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d691"), "name" : "MIck99", "Course" : "BCA", "batch_year" : 2020, "language" : ["C#", "JavaScript"], "personal_details" : { "Father_name" : "Henry", "phone_no" : 9874563698, "age" : 20, "gender" : "Female", "City" : "London", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d655"), "name" : "Jonny", "Course" : "MCALE", "batch_year" : 2019, "language" : ["C#", "java", "PHP"], "personal_details" : { "Father_name" : "Thomas", "phone_no" : 7845123698, "age" : 24, "gender" : "Male", "City" : "London", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d678"), "name" : "Oliver", "Course" : "MCA", "batch_year" : 2017, "language" : ["c", "PHP"], "personal_details" : { "Father_name" : "William", "phone_no" : 9997845123, "age" : 25, "gender" : "Male", "City" : "Liverpool", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d665"), "name" : "mia", "Course" : "btech", "batch_year" : 2020, "language" : ["HTML", "CSS", "PHP"], "personal_details" : { "Father_name" : "Leo", "phone_no" : 6312547896, "age" : 22, "gender" : "Female", "City" : "Manchester", } } 示例 1:显示正在攻读 B.Tech 的学生的详细信息。 我们正在显示课程为 btech 的学生的详细信息,因此我们使用 $regex 运算符(即 {$regex : "btech"})为 find() 方法中的课程字段传递一个正则表达式。 注意:使用 Printjson 更好地打印查询返回的每个文档。输出 >db.student.find({Course : {$regex: "btech" }}).forEach(printjson) { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d65f"), "name" : "Mick", "Course" : "btech", "batch_year" : 2018, "language" : ["c++", "java", "python"], "personal_details" : { "Father_name" : "Jonny", "phone_no" : 8895321456, "age" : 23, "gender" : "Male", "City" : "NewYork", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d665"), "name" : "mia", "Course" : "btech", "batch_year" : 2020, "language" : ["HTML", "CSS", "PHP"], "personal_details" : { "Father_name" : "Leo", "phone_no" : 6312547896, "age" : 22, "gender" : "Female", "City" : "Manchester", } } 示例 2:使用 i <options> 显示姓名以“Mi”开头的学生的详细信息。 注意:使用 Printjson 更好地打印查询返回的每个文档。输出 >db.student.find({name:{$regex: "Mi",$options:'i'}}).forEach(printjson) { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d65f"), "name" : "Mick", "Course" : "btech", "batch_year" : 2018, "language" : ["c++", "java", "python"], "personal_details" : { "Father_name" : "Jonny", "phone_no" : 8895321456, "age" : 23, "gender" : "Male", "City" : "NewYork", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d691"), "name" : "MIck99", "Course" : "BCA", "batch_year" : 2020, "language" : ["C#", "JavaScript"], "personal_details" : { "Father_name" : "Henry", "phone_no" : 9874563698, "age" : 20, "gender" : "Female", "City" : "London", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d665"), "name" : "mia", "Course" : "btech", "batch_year" : 2020, "language" : ["HTML", "CSS", "PHP"], "personal_details" : { "Father_name" : "Leo", "phone_no" : 6312547896, "age" : 22, "gender" : "Female", "City" : "Manchester", } } 示例 3:显示课程为 MCA 的学生的详细信息。 注意:使用 Printjson 更好地打印查询返回的每个文档。输出 >db.student.find({Course : {$regex: "^MCA$"}}).forEach(printjson) { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d678"), "name" : "Oliver", "Course" : "MCA", "batch_year" : 2017, "language" : ["c", "PHP"], "personal_details" : { "Father_name" : "William", "phone_no" : 9997845123, "age" : 25, "gender" : "Male", "City" : "Liverpool", } } 不使用 $regex 运算符的模式匹配在 MongoDB 中,我们可以在不使用 $regex 运算符的情况下进行模式匹配。 在此方法中,它使用正则表达式对象。 语法示例 4: 使用正则表达式对象显示姓名中包含“ck”的学生的详细信息。 “//”表示在这些分隔符中指定您的搜索条件。 因此,我们正在寻找姓名中带有“CK”的文档。 输出 { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d65f"), "name" : "Mick", "Course" : "btech", "batch_year" : 2018, "language" : ["c++", "java", "python"], "personal_details" : { "Father_name" : "Jonny", "phone_no" : 8895321456, "age" : 23, "gender" : "Male", "City" : "NewYork", } } { "_id" : ObjectId("56254d4fdf2222265r4g12ds3d691"), "name" : "MIck99", "Course" : "BCA", "batch_year" : 2020, "language" : ["C#", "JavaScript"], "personal_details" : { "Father_name" : "Henry", "phone_no" : 9874563698, "age" : 20, "gender" : "Female", "City" : "London", } } 下一主题MongoDB $exp 运算符 |
我们请求您订阅我们的新闻通讯以获取最新更新。