Você só pode fazer isso com a estrutura de agregação, não com a localização regular.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Observe que isso não poderá usar nenhum índice, pois não há suporte para índices em valores calculados no MongoDB (ainda).
Se você tiver um índice em
field1
e você sabe quantos caracteres espera que field1 contribua para value
você pode melhorar o desempenho dessa agregação assim:db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
onde
val
é a primeira parte da string "value" (você não deve comparar mais caracteres do que o menor valor possível de field1
no entanto. EDITAR a partir da versão 3.6 você pode fazer isso em find usando o
$expr
expressão:db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})