Contexto
En una base de datos MongoDB, tengo una colección con documentos de correo dentro. Cada documento tiene campos de destinatario y remitente.
Meta
Quiero consultar un correo de cada remitente. En otras palabras, no quiero dos o más correos del mismo remitente.
Ejemplo
Tengo tres documentos:
{ _id: 1, sender: John, receiver: Kate } { _id: 2, sender: John, receiver: Kate } { _id: 3, sender: Mike, receiver: Kate }Después de la consulta, debería terminar con: (el segundo correo de John no está incluido)
{ _id: 1, sender: John, receiver: Kate } { _id: 3, sender: Mike, receiver: Kate }¡Por favor ayuda! Gracias.
use esta agregación, agrupe por remitente y empuje el receptor a la matriz, luego coloque el receptor como primer elemento de la matriz
db.collection.aggregate([ { $group: { _id: { "sender": "$sender" }, r: { "$push": "$$ROOT" } } }, { "$project": { sender: "$_id.sender", receiver: { $first: "$r.receiver" }, description: { $first: "$r.description" }, _id: 0 } } ])