Du kan kun gøre det med aggregeringsramme, ikke med almindeligt fund.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Bemærk, at dette ikke vil være i stand til at bruge nogen indekser, da der ikke er understøttelse af indekser på beregnede værdier i MongoDB (endnu).
Hvis du har et indeks på field1
og du ved, hvor mange tegn du forventer, at felt1 bidrager til value
du kan forbedre ydeevnen af denne aggregering på denne måde:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
hvor val
er første del af "værdi"-strengen (du må ikke sammenligne flere tegn end den kortest mulige værdi af field1
dog.
REDIGER fra version 3.6 kan du gøre dette i find ved at bruge $expr
udtryk:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})