Puoi farlo solo con il framework di aggregazione, non con la ricerca regolare.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Nota che questo non sarà in grado di utilizzare alcun indice, poiché non esiste (ancora) supporto per gli indici sui valori calcolati in MongoDB.
Se hai un indice su field1
e sai quanti caratteri ti aspetti che field1 contribuisca a value
puoi migliorare le prestazioni di questa aggregazione in questo modo:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
dove val
è la prima parte della stringa "value" (non devi confrontare più caratteri del valore più breve possibile di field1
però.
MODIFICA a partire dalla versione 3.6 puoi farlo in find usando il $expr
espressione:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})