MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come cercare utenti sia per nome che per cognome con MongoDB?

Vedo un paio di errori nel tuo codice che causano risultati indesiderati.

  1. La pipeline di aggregazione accetta una serie di operazioni del framework di aggregazione. Nel tuo caso, ti manca [] operatore. Dovrebbe essere come

    User.aggregate([{$project...},{$match...}])

  2. Nella fase $match stai usando regex, se stai usando /../ style of regex, non è necessario avvolgerlo tra virgolette di stringa. Dovrebbe essere /bob j/i

Ecco l'esempio finito:

User.aggregate([
  {$project: { "name" : { $concat : [ "$firstName", " ", "$lastName" ] } }},
  {$match: {"name": {$regex: /bob j/i}}}
]).exec(function(err, result){
  console.log(result);
});

Dovresti vedere [ { _id: 574c3e20be214bd4078a9149, name: 'Bob Jerry' } ] sullo schermo.