Du kan bara göra det med aggregeringsramverk, inte med vanligt fynd.
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
Observera att detta inte kommer att kunna använda några index, eftersom det inte finns något stöd för index på beräknade värden i MongoDB (ännu).
Om du har ett index på field1
och du vet hur många tecken du förväntar dig att fält1 ska bidra till value
du kan förbättra prestandan för denna aggregering så här:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
där val
är första delen av "värde"-strängen (du får inte jämföra fler tecken än det kortaste möjliga värdet för field1
dock.
REDIGERA från och med version 3.6 kan du göra detta med hjälp av $expr
uttryck:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})