sql >> Databáze >  >> NoSQL >> MongoDB

Vyberte záznamy odpovídající hodnotě concat dvou polí v mongodb

Můžete to udělat pouze s agregačním rámcem, nikoli s běžným hledáním.

db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
                  {$match:{newField:"value"}} 
);

Všimněte si, že toto nebude moci používat žádné indexy, protože v MongoDB (zatím) neexistuje žádná podpora pro indexy na vypočítaných hodnotách.

Pokud máte index na field1 a víte, kolik znaků očekáváte, že pole1 přispěje k value výkon této agregace můžete zlepšit takto:

db.coll.aggregate({$match:{field1:/^val/}},
                  {$project:{newField:{$concat:["$field1","$field2"]}}},
                  {$match:{newField:"value"}} 
);

kde val je první částí řetězce "value" (nesmíte porovnávat více znaků, než je nejkratší možná hodnota field1 ačkoli.

UPRAVIT od verze 3.6 to můžete udělat v find pomocí $expr výraz:

db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})


  1. MongoDB $podlaží

  2. Instalace Redis na Debian 9

  3. chcete provozovat redis-server na pozadí nonstop

  4. Vypršení platnosti RedisTemplate nefunguje