2013-05-19 16 views
2

c'est ma collection de rendez-vousGroupe par date dans mangouste

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:"John" } 

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:"alex" } 

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:"sara" } 

Comment puis-je obtenir mon resualt comme ça

{date: ISODate("2013-05-13T22:00:00Z"), 
patients:["John","alex","sara"] } 

i essayer ce

Appointments.aggregate([ 
{ 
$group: { 
_id: '$date' 
} 
} 
], function(err, doc) { 
return console.log(JSON.stringify(doc)); 
}); 

toute aide s'il vous plaît

Répondre

5

Utilisez le $push opérateur d'agrégation pour assembler le tableau patients dans le $group:

Appointments.aggregate([ 
    {$group: {_id: '$date', patients: {$push: '$patient'}}}, 
    {$project: {date: '$_id', patients: 1, _id: 0}} 
], ...) 

Pour inclure les patients ids comme dans votre question de suivi:

Appointments.aggregate([ 
    {$group: {_id: '$date', patients: {$push: { 
     patient: '$patient' 
     _id: '$_id' 
    }}}}, 
    {$project: {date: '$_id', patients: 1, _id: 0}} 
], ...) 
+0

merci .... comment peut pousser _id avec le patient? ?? {date: ISODate ("2013-05-13T22: 00: 00Z"), patients: [{_id: 518ee0bc9be1909012000002, patient: "John"}, { _id: 518ee0bc9be1909012000002, patient: "alex"}, {_id: 518ee0bc9be1909012000002, patient: "sara"}] } –

+0

@MnSa Voir la mise à jour de la réponse. – JohnnyHK

+0

merci beaucoup ... –