Sie können dies nur mit dem Aggregation Framework tun, nicht mit der regulären Suche.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Beachten Sie, dass dies keine Indizes verwenden kann, da es (noch) keine Unterstützung für Indizes auf berechneten Werten in MongoDB gibt.
Wenn Sie einen Index auf field1
haben und Sie wissen, wie viele Zeichen Feld1 voraussichtlich zu value
beitragen wird Sie können die Leistung dieser Aggregation wie folgt verbessern:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
wobei val
ist der erste Teil der "Wert"-Zeichenfolge (Sie dürfen nicht mehr Zeichen als den kürzestmöglichen Wert von field1
vergleichen obwohl.
BEARBEITEN ab Version 3.6 können Sie dies in find mit dem $expr
tun Ausdruck:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})