Digamos que tengo una colección de personas con un objeto de persona y sus datos asociados.
{ _id: '1' person:{ email:"bob@gmail.com" traveled_to: 'North Korea', someinfo:"random" } } { _id: '2' person:{ email:"bob@gmail.com" traveled_to: 'United States' someinfo:"very random" } }, { _id: '3' person:{ email:"jack@gmail.com" traveled_to: 'Russia' someinfo:"super super random" } }Me gustaría, por ejemplo , agrupar bob@gmail.com y almacenar su información en una matriz
{ _id: '1' person:{ email:"bob@gmail.com" travels: [ { traveled_to: 'North Korea', someinfo:"random" }, { traveled_to: 'United States' someinfo:"very random" } ] }, { _id: '2' email:"jack@gmail.com" travels:[ { traveled_to: 'Russia' some_info:'super super random' } ] }Intenté algo como esto
People.aggregate([ { $group: { person: { email: '$email', }, }, }, ]Aunque estoy recibiendo un
MongoError: el campo 'persona' debe ser un objeto acumulador
¡Gracias!
Debe tener un objeto acumulador sobre el cual mongoDB agrupa los valores
Prueba esto
People.aggregate([ { $group: { _id: "$person.email", traveled_to:{ $push:{ traveled_to: "$person.traveled_to", someinfo: "$person.someinfo" } }, }, }, ]Debe envolver el esquema de mangosta usando el corchete "{ }". me gusta->
People.aggregate({ [ { $group: { person: { email: '$email', }, }, },] }