Überprüfen Sie, ob das Feld eine Zeichenfolge in MongoDB enthält

Tahseen Tauseef 20 Juni 2023
  1. Verwenden Sie regex in MongoDB
  2. Überprüfen Sie, ob das Feld eine Zeichenfolge in MongoDB enthält
  3. Prüfen, ob das Feld eine Zeichenfolge enthält (Groß-/Kleinschreibung beachten)
  4. Prüfen, ob das Feld eine Zeichenfolge enthält (kein Ergebnis)
  5. Überprüfen Sie, ob das Feld eine bestimmte Anfangszeichenfolge enthält
  6. Überprüfen Sie, ob das Feld eine bestimmte Endzeichenfolge enthält
Überprüfen Sie, ob das Feld eine Zeichenfolge in MongoDB enthält

Dieser Beitrag befasst sich mit der Verwendung von Regex in MongoDB, um festzustellen, ob ein Feld eine Zeichenfolge enthält oder nicht.

Verwenden Sie regex in MongoDB

Der reguläre Ausdruck (regex) ist eine Textzeichenfolge, die ein Suchmuster definiert. Mehrere regex-Engines sind in leicht unterschiedlicher Syntax geschrieben, aber die Grundlagen sind die gleichen.

Ein regex-Ausdruck ist eine Zeichenfolge (Zeichenfolge), die auf beiden Seiten von einem einzelnen Schrägstrich (/) wie im folgenden Beispiel umgeben ist.

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

Da Shell-Regex derzeit jedoch nicht in Abfragen für mongoplayground.net, funktioniert, können Sie stattdessen den unten angegebenen Ausdruck verwenden.

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

Der Operator $regex in MongoDB wird verwendet, um eine Abfrage zu finden, die einen String enthält. MongoDB ermöglicht es Ihnen, einen regulären Ausdruck zu verwenden, um über eine Abfrage nach einem Muster in einem String zu suchen.

Der Operator $regex wird verwendet, um Text in Abfragen mit regulären Ausdrücken zu vergleichen.

Syntax:

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

Sie können die Dokumente der Felder anzeigen, die die Wertzeichenfolge enthalten, die Sie im regulären Ausdrucksoperator $regex übergeben können. Um die obige Syntax zu verstehen, können Sie mit dem folgenden Dokument eine Sammlung von teams erstellen.

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
    },

  ]
}

Überprüfen Sie, ob das Feld eine Zeichenfolge in MongoDB enthält

Sie können den folgenden Code verwenden, um zu überprüfen, ob ein Dokument die Zeichenfolge Man im Teamfeld enthält.

Anfrage:

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

Ausgang:

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

Prüfen, ob das Feld eine Zeichenfolge enthält (Groß-/Kleinschreibung beachten)

Sie können regex in MongoDB verwenden, um zu prüfen, ob ein Feld einen bestimmten String-Wert enthält, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird. Verwenden Sie die Option $i mit einem regulären Ausdruck in MongoDB.

Die Option $i hilft Ihnen, Felder mit klein- und großgeschriebenen Zeichenfolgenwerten zu finden.

Anfrage:

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

Ausgang:

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

Prüfen, ob das Feld eine Zeichenfolge enthält (kein Ergebnis)

Wenn ein Feld die gesuchte Zeichenfolge nicht enthält, erhalten Sie kein Dokument gefunden. Angenommen, Sie verwenden die folgende Abfrage.

Anfrage:

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

Ausgang:

no document found

Da kein Dokument den String Wolves im Teamnamen enthält, erhalten Sie die Ausgabe kein Dokument gefunden.

Überprüfen Sie, ob das Feld eine bestimmte Anfangszeichenfolge enthält

Wir verwenden Regex in MongoDB, um zu prüfen, ob ein Feld mit einem bestimmten Zeichenfolgenwert beginnt.

Anfrage:

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

Ausgang:

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

Sie haben mit Hilfe von regex in MongoDB erfolgreich ein Dokument gefunden, das mit dem Buchstaben "C" beginnt.

Überprüfen Sie, ob das Feld eine bestimmte Endzeichenfolge enthält

Lassen Sie uns in diesem Beispiel prüfen, ob ein Feld mit einem bestimmten Zeichenfolgenwert endet.

Anfrage:

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

Ausgang:

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

Sie haben mit Hilfe von regex in MongoDB zwei Dokumente gefunden, die auf den Buchstaben "l" enden.

Durch diesen Artikel haben Sie Beispiele für verschiedene Methoden kennengelernt, die $regex in MongoDB verwenden, um zu prüfen, ob ein Feld eine Zeichenfolge enthält oder nicht.