Tengo dos colecciones. Una colección almacena datos de usuario y otra colección almacena datos de transacciones. Los datos de la transacción hacen referencia a los datos del usuario mediante un campo externo en la identificación del usuario.
¿Cómo haría para obtener todos los datos de usuario con un campo adicional que es la suma de todas las transacciones vinculadas en el campo de cantidad?
El modelo de usuario consta de id y varios otros campos, por ejemplo
{ id: unique_mongo_id name: Tom ... }La tabla de transacciones consta de dos campos principales que son una referencia a la identificación del usuario y el valor de la transacción, por ejemplo
{ userId: unique_mongo_user_id amount: 100 ... }El resultado que estoy tratando de lograr es una simple obtención de todos los campos de usuario con un campo adicional que es la suma de todos los datos transaccionales.
¡Muchas gracias por su ayuda en esto!
Puede utilizar esta consulta de agregación:
$lookup para unir colecciones y obtener valores en un campo llamado transactions .$project para obtener la $sum (es decir, el total ) de la amount del campo en el resultado unido. db.user.aggregate([ { "$lookup": { "from": "transactions", "localField": "_id", "foreignField": "userId", "as": "transactions" } }, { "$project": { "name": 1, "total": { "$sum": "$transactions.amount" } } } ])Ejemplo aquí
collection.CountDocuments()
colección es el nombre de su colección. Por ejemplo, si el nombre de su colección es ejemplo - ejemplo.CountDocuments()