MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb - Regex-Übereinstimmung von Schlüsseln für Unterdokumente

Es ist nicht möglich, Dokumentschlüssel auf diese Weise abzufragen. Sie können mit $exists nach exakten Übereinstimmungen suchen , aber Sie können keine Schlüsselnamen finden, die einem Muster entsprechen.

Ich nehme (vielleicht fälschlicherweise) an, dass Sie versuchen, Dokumente zu finden, die ein URL-Unterdokument haben, und dass nicht alle Dokumente dies haben werden? Warum verschieben Sie diese Art von Informationen nicht um eine Ebene nach unten, etwa so:

{
  payload: {
    type: "url",
    url: "Facebook.com",
    ...
  }
}

Dann könnten Sie wie folgt abfragen:

db.foo.find({"payload.type": "url", ...})

Ich wäre auch nachlässig, wenn ich nicht bemerkt hätte, dass Sie keine Punkte verwenden sollten (. ) sind Schlüsselnamen in MongoDB. In einigen Fällen ist es möglich, Dokumente wie dieses zu erstellen, aber es wird große Verwirrung stiften, wenn Sie versuchen, eingebettete Dokumente abzufragen (wobei Mongo den Punkt sozusagen als "Pfadtrennzeichen" verwendet).