sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo buscar usuarios por nombre y apellido con MongoDB?

Veo un par de errores en su código que causan un resultado no deseado.

  1. La canalización de agregación acepta una matriz de operaciones de marco de agregación. En tu caso, te falta [] operador. Debería ser como

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

  2. En la etapa $match está usando expresiones regulares, si está usando /../ estilo de expresión regular, no necesita envolverlo entre comillas de cadena. Debería ser /bob j/i

Aquí está el ejemplo terminado:

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

Deberías ver [ { _id: 574c3e20be214bd4078a9149, name: 'Bob Jerry' } ] en pantalla.