El campo de verificación contiene una cadena en MongoDB

Tahseen Tauseef 20 junio 2023
  1. Usar regex en MongoDB
  2. Comprobar si el campo contiene una cadena en MongoDB
  3. Comprobar si el campo contiene una cadena (sin distinción entre mayúsculas y minúsculas)
  4. Comprobar si el campo contiene una cadena (sin resultado)
  5. Comprobar si el campo contiene una cadena inicial específica
  6. Comprobar si el campo contiene una cadena final específica
El campo de verificación contiene una cadena en MongoDB

Esta publicación aborda cómo usar expresiones regulares en MongoDB para determinar si un campo contiene una cadena o no.

Usar regex en MongoDB

La expresión regular (regex) es una cadena de texto que define un patrón de búsqueda. Varios motores de regex están escritos con una sintaxis ligeramente diferente, pero los fundamentos son los mismos.

Una expresión regex es una cadena (serie de caracteres) contenida en ambos lados por una sola barra inclinada (/) como en el siguiente ejemplo.

db.collection.find({
    "k": /pattern/
  })

Pero actualmente, como la expresión regular de shell no funciona en la consulta de mongoplayground.net,, puede usar la expresión que se proporciona a continuación.

db.collection.find({
    "k": {
      "$regex": "pattern"
    }
  })

El operador $regex en MongoDB se usa para encontrar una consulta que contiene una cadena. MongoDB le permite usar una expresión regular para buscar un patrón en una cadena a través de una consulta.

El operador $regex se utiliza para buscar patrones de texto en las consultas, utilizando capacidades de expresión regular.

Sintaxis:

db.collection.find({"k":{$regex:"pattern"}});

Puede mostrar los documentos de esos campos que contienen la cadena de valor que puede pasar en el operador de expresión regular $regex. Para comprender la sintaxis anterior, puede crear una colección de equipos con el siguiente documento.

db={
  "teams": [
    {
      team: "Manchester City ",
      position: "1st",
      points: 70
    },
    {
      team: "Liverpool",
      position: "2nd",
      points: 69
    },
    {
      team: "Chelsea",
      position: "3rd",
      points: 59
    },
    {
      team: "Arsenal",
      position: "4th",
      points: 54
    },
    {
      team: "Tottenham",
      position: "5th",
      points: 51
    },
    {
      team: "Manchester United",
      position: "6th",
      points: 50
    },

  ]
}

Comprobar si el campo contiene una cadena en MongoDB

Puede usar el siguiente código para verificar si algún documento contiene la cadena Hombre en el campo del equipo.

Consulta:

db.teams.find({
  team: {
    "$regex": "Man"
  }
})

Producción :

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "points": 70,
    "position": "1st",
    "team": "Manchester City "
  },
  {
    "_id": ObjectId("5a934e000102030405000005"),
    "points": 50,
    "position": "6th",
    "team": "Manchester United"
  }
]

Comprobar si el campo contiene una cadena (sin distinción entre mayúsculas y minúsculas)

Puede usar regex en MongoDB para verificar si un campo contiene un valor de cadena específico que no distingue entre mayúsculas y minúsculas. Use la opción $i con una expresión regular en MongoDB.

La opción $i lo ayudará a encontrar campos con valores de cadena especificados en minúsculas y mayúsculas.

Consulta:

db.teams.find({
  team: {
    "$regex": "MAN",
    "options": "$i"
  }
})

Producción :

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "points": 70,
    "position": "1st",
    "team": "Manchester City "
  },
  {
    "_id": ObjectId("5a934e000102030405000005"),
    "points": 50,
    "position": "6th",
    "team": "Manchester United"
  }
]

Comprobar si el campo contiene una cadena (sin resultado)

Si un campo no contiene la cadena específica que buscó, recibirá “no se encontró ningún documento”. Por ejemplo, suponga que está utilizando la siguiente consulta.

Consulta:

db.teams.find({
  team: {
    "$regex": "Wolves"
  }
})

Producción :

no document found

Dado que ningún documento contiene la cadena Lobos en el nombre del equipo, obtendrá el resultado no se encontró ningún documento.

Comprobar si el campo contiene una cadena inicial específica

Usaremos expresiones regulares en MongoDB para examinar si un campo comienza con un valor de cadena específico.

Consulta:

db.teams.find({
  team: {
    "$regex": "^C"
  }
})

Producción :

[
  {
    "_id": ObjectId("5a934e000102030405000002"),
    "points": 59,
    "position": "3rd",
    "team": "Chelsea"
  }
]

Ha encontrado con éxito un documento que comienza con la letra "C" con la ayuda de regex en MongoDB.

Comprobar si el campo contiene una cadena final específica

Verifiquemos si un campo termina con un valor de cadena especificado en este ejemplo.

Consulta:

db.teams.find({
  team: {
    "$regex": "l$"
  }
})

Producción :

[
  {
    "_id": ObjectId("5a934e000102030405000001"),
    "points": 69,
    "position": "2nd",
    "team": "Liverpool"
  },
  {
    "_id": ObjectId("5a934e000102030405000003"),
    "points": 54,
    "position": "4th",
    "team": "Arsenal"
  }
]

Ha encontrado dos documentos que terminan con la letra "l" con la ayuda de regex en MongoDB.

A través de este artículo, ha aprendido ejemplos de diferentes métodos usando $regex en MongoDB para verificar si un campo contiene una cadena o no.