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

Campos de suma Mongoose de documentos poblados

Puede probar la siguiente agregación en 3.4.

$lookup para buscar los puntos de las pistas completadas seguido de $addFields para devolver un campo de puntuación que suma los puntos y $project con exclusión para eliminar el campo de datos de búsqueda de la respuesta.

UserModel.aggregate([
  {"$lookup":{
    "from":"tracks", // name of the foreign collection
    "localField":"completedTracks",
    "foreignField":"_id",
    "as":"lookup-data"
  }},
  {"$addFields":{
    "score":{
      "$sum":"$lookup-data.points"
    }
  }},
  {"$project":{"lookup-data":0}}
])