Můžete to udělat pouze s agregačním rámcem, nikoli s běžným hledáním.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Všimněte si, že toto nebude moci používat žádné indexy, protože v MongoDB (zatím) neexistuje žádná podpora pro indexy na vypočítaných hodnotách.
Pokud máte index na field1
a víte, kolik znaků očekáváte, že pole1 přispěje k value
výkon této agregace můžete zlepšit takto:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
kde val
je první částí řetězce "value" (nesmíte porovnávat více znaků, než je nejkratší možná hodnota field1
ačkoli.
UPRAVIT od verze 3.6 to můžete udělat v find pomocí $expr
výraz:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})