Solo puede hacerlo con el marco de agregación, no con la búsqueda normal.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Tenga en cuenta que esto no podrá usar ningún índice, ya que no hay soporte para índices en valores calculados en MongoDB (todavía).
Si tiene un índice en field1
y sabe cuántos caracteres espera que el campo1 contribuya a value
puede mejorar el rendimiento de esta agregación de esta manera:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
donde val
es la primera parte de la cadena "valor" (no debe comparar más caracteres que el valor más corto posible de field1
aunque.
EDITAR a partir de la versión 3.6, puede hacer esto en find usando $expr
expresión:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})