Wählen Sie passenden Sätze concat-Wert der beiden Felder in mongodb
Gibt es eine Möglichkeit, so etwas zu tun auf MongoDB?
select * from table where concat(field1, field2) = 'value'
Zu verdeutlichen, habe ich ein array mit vollständigen Namen, aber die Dokumente sind Vorname und Nachname trennen, so will ich tun, so etwas wie
select * from table where concat(firstname, lastname) in ([ARRAY OF NAMES])
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nur tun es mit aggregation-framework nicht mit normalen finden.
Beachten Sie, dass diese nicht in der Lage, verwenden alle Indizes, da es keine Unterstützung für Indizes auf berechneten Werte in MongoDB (noch) nicht.
Wenn Sie über einen index auf
field1
und Sie wissen, wie viele Zeichen, die Sie erwarten Feld1 Beitrag zuvalue
Sie können die Leistung verbessern, dieser aggregation wie diese:wo
val
ist der erste Teil von "Wert" string (müssen Sie nicht vergleichen, mehr Zeichen als in der kürzest möglichen Wert vonfield1
obwohl.BEARBEITEN ab der version 3.6 können Sie dies tun, finden über die
$expr
Ausdruck:$expr
Lösung verwenden Sie einen index?Wenn das argument ($Feld1 und $Feld2) wird in einen Wert von null oder verweist auf ein Feld fehlt, $concat null zurück. Da mongoDB3.0, eine neue $ifNull ist vorgesehen, um zu überprüfen, ob das argument null ist, und bieten eine alternative
Können sich die Ergebnisse nicht unterscheiden, wenn wir mit $match, aber diese Ergebnisse können variieren, wenn Sie möchten, verwenden Sie $regex.
In Mungo, Sie mögen können, dass
Ausgabe wird so sein
]