Gibt es eine integrierte Möglichkeit, die Feldnamen mit Regex in einer MongoDB-Datenbank zu suchen? Die Dokumentation listet ein $ Regex-Feld auf, um den Feldwert zu suchen.Suche nach Regex nach Feldname
Antwort
Sie können dies entweder in beliebiger Tiefe mit Hilfe von JavaScript Auswertung einer $where
Klausel:
db.collection.find(
function() {
var findKey = new RegExp("^start");
function inspectObj(doc) {
return Object.keys(doc).some(function(key) {
if (typeof(doc[key]) == "object") {
return inspectObj(doc[key]);
} else {
return findKey.test(key);
}
});
}
return inspectObj(this);
}
)
Oder wenn haben Sie MongoDB 3.4 und suchen nur auf der „oberen“ Ebene des Dokuments können Sie dies tun mit .aggregate()
und $objectToArray
:
db.collection.aggregate([
{ "$addFields": {
"finder": { "$objectToArray": "$$ROOT" }
}},
{ "$match": { "finder.k": /^start/ } }
])
Dies liegt daran, $objectToArray
ein „Objekt“ führt und übersetzt in eine Anordnung von Gegenständen mit Tasten "k"
und "v"
für jeden "Schlüssel" und "Wert" des gelieferten Objekts. Wir können dies mit $$ROOT
für das gesamte Dokument tun. Wir machen also im Grunde die "Schlüssel" zu "Daten", die durchsucht werden können.
Mit den transformierten Daten können Sie dann einfache "Punktnotation" und einen regulären Abfrageausdruck $regex
verwenden, um den Wert des "Schlüssels" abzugleichen.
Also die Aggregatmethode ist am besten für "flache" Dokumente oder Umgang mit einer "bekannten Tiefe", und der JavaScript-Ansatz ist am besten, wo der Schlüssel auf jeder Ebene verschachtelt werden könnte.
Zurechnung an: How to find MongoDB field name at arbitrary depth für die wesentliche Teile der JavaScript-Version der Suche. Nur für den regulären Ausdruck geändert.
- 1. Gruppieren nach Feldname
- 2. Regex Suche nach Verschachtelte Klammern
- 3. Regex - Suche nach optionalen Argumenten
- 4. JS Regex Suche nach Telefonnummer Muster
- 5. Suche nach Duplikaten in einer RegEx-Erfassungsgruppe?
- 6. Regex Suche nach beliebigen Zeichenketten zur Laufzeit
- 7. Suche nach bestimmten Spaltenwert über Regex
- 8. Auf der Suche nach Advanced RegEx Ersatzformel
- 9. der Suche nach regex href Text
- 10. Suche nach Div Klassen mit Regex
- 11. Suche nach bestimmten Dateien mit Regex
- 12. regex für die Dateiendung der Suche nach
- 13. Regex Probleme bei der Suche nach Leerzeichen
- 14. Regex Suche nach vorne zu schauen
- 15. LINQ to SQL, wie Wert nach Feldname
- 16. Suche nach Ereignis nach Ort
- 17. Suche nach Verfügbarkeit nach Zeit
- 18. Suche nach allen Zahlen
- 19. XML SQL Suche ohne ID Feldname
- 20. Suche nach String, Akzente ignorieren
- 21. Elastische Suche. Suche nach Untersammlungswert
- 22. Suche nach Zeichen mit Leerzeichen
- 23. Notepad ++ RegEx: Suche nach mehreren Wörtern in einer riesigen Textdatei
- 24. RegEx - Auf der Suche nach E-Mails innerhalb einer Protokolldatei
- 25. Regex Suche nach doppelten numerischen Werte in einer Textdatei
- 26. Suche nach einem Apostroph Regex Matching nur innerhalb Zeichenfolge
- 27. Suche nach dem n-ten Vorkommen einer Zahl mit Regex
- 28. Wie macht man eine Grep-Regex-Suche nach einfachen Anführungszeichen?
- 29. Suche nach einem Regex Zeichenfolge übereinstimmen mit 々
- 30. Isotope Regex Suche Filterung nach Wort am Anfang der Zeile