Je kunt het alleen doen met een aggregatieraamwerk, niet met regelmatig zoeken.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Merk op dat dit geen indexen kan gebruiken, aangezien er (nog) geen ondersteuning is voor indexen op berekende waarden in MongoDB.
Als je een index hebt op field1
en u weet hoeveel tekens u verwacht dat veld1 bijdraagt aan value
u kunt de prestaties van deze aggregatie als volgt verbeteren:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
waar val
is het eerste deel van de tekenreeks "waarde" (u mag niet meer tekens vergelijken dan de kortst mogelijke waarde van field1
hoewel.
BEWERKEN vanaf versie 3.6 kun je dit doen in find met behulp van de $expr
uitdrukking:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})