ho collezione in cui i documenti sono come:Restituisce l'ultimo valore "vero" per ogni gruppo
{
_id: ObjectId(),
user: ObjectId(),
studentName: String,
createdAt: Date,
isAbondoned: boolean
}
esempio di documenti sono:
1-
{
"_id" : ObjectId("56cd2d36a489a5b875902f0e"),
"user" : ObjectId("56c4cafabd5f92cd78ae49d4"),
"studentName" : "Aman",
"createdAt" : ISODate("2016-02-24T04:10:30.486+0000"),
"isAbandoned" : true
}
2 -
{
"_id" : ObjectId("56cd2dcda489a5b875902fcd"),
"user" : ObjectId("56c4cafabd5f92cd78ae49d4"),
"studentName" : "Aman",
"createdAt" : ISODate("2016-02-24T04:13:01.932+0000"),
"isAbandoned" : false
}
3-
{
"_id" : ObjectId("56cee51503b7cb7b0eda9c4c"),
"user" : ObjectId("56c85244bd5f92cd78ae4bc1"),
"studentName" : "Rajeev",
"createdAt" : ISODate("2016-02-25T11:27:17.281+0000"),
"isAbandoned" : true,
}
Ora voglio trovare l'elenco degli studenti per i quali la loro 'isAbandoned' vale per il loro ultimo documento 'createdAt'.
uscita Richiesto per esempio di cui sopra è:
{
"user" : ObjectId("56c85244bd5f92cd78ae4bc1"),
"studentName" : "Rajeev"
}
perché per studentName "Aman" max (createdAt) è 2 ° documento e 'isAbandoned' è falso per questo.
Questo funziona, ma è davvero, davvero non efficiente, davvero non c'è bisogno di passare attraverso tutti questo problema – styvane
Anche il tuo codice fallirà se OP sta usando la vecchia versione di MongoDB perché '$ filter' è nuovo nella versione 3.2 – styvane
@ user3100115 - la versione di db non è stata specificata :-), così che il mio è stato assunto, btw bella soluzione pulita! – profesor79