Skip to content

Instantly share code, notes, and snippets.

@samflores
Created August 29, 2012 15:23
Show Gist options
  • Save samflores/3514294 to your computer and use it in GitHub Desktop.
Save samflores/3514294 to your computer and use it in GitHub Desktop.
doc = {
name: "Samuel Flores",
exams: [
{name: "Eletro-cardiograma", date: "2012-08-10"},
{name: "Hemacias", date: "2012-08-09"},
{name: "Tomografia", date: "2012-08-10"},
{name: "Hemacias", date: "2012-06-10"},
{name: "Ressonancia Magnetica", date: "2012-05-10"},
{name: "Whatever", date: "2012-04-10"},
{name: "Whatever", date: "2012-03-10"},
{name: "Whatever", date: "2012-02-10"},
{name: "Whatever", date: "2012-01-10"}
]
}
// db.people.insert(doc);
// o limit(3) limita a quantidade de documentos da coleção retornados (people) e não a quantidade de exams. acho que vai ter que rolar um reduce mesmo :p
// db.people.find({}, {'exams': 1}).sort({"exams.date": -1}).limit(3);
{
"_id":ObjectId("503e385c41949d36180e0f92"),
"exams":[
{ "name":"Eletro-cardiograma", "date":"2012-08-10" },
{ "name":"Hemacias", "date":"2012-08-09" },
{ "name":"Tomografia", "date":"2012-08-10"},
{ "name":"Hemacias", "date":"2012-06-10" },
{ "name":"Ressonancia Magnetica", "date":"2012-05-10" },
{ "name":"Whatever", "date":"2012-04-10" },
{ "name":"Whatever", "date":"2012-03-10" },
{ "name":"Whatever", "date":"2012-02-10" },
{ "name":"Whatever", "date":"2012-01-10" }
]
}
// ou db.people.find({}, {'exams.date': 1}).sort({"exams.date": -1}).limit(3);
{
"_id":ObjectId("503e385c41949d36180e0f92"),
"exams":[
{ "date":"2012-08-10" },
{ "date":"2012-08-09" },
{ "date":"2012-08-10"},
{ "date":"2012-06-10" },
{ "date":"2012-05-10" },
{ "date":"2012-04-10" },
{ "date":"2012-03-10" },
{ "date":"2012-02-10" },
{ "date":"2012-01-10" }
]
}
db.people.aggregate(
{ $project: { exams: 1 } },
{ $unwind: "$exams" },
{ $sort: { "exams.date" : -1 } },
{ $limit: 3 }
)
result = {
"result" : [
{
"_id" : ObjectId("503e688d156562dc0cb61603"),
"exams" : {
"name" : "Eletro-cardiograma",
"date" : "2012-08-10"
}
},
{
"_id" : ObjectId("503e688d156562dc0cb61603"),
"exams" : {
"name" : "Tomografia",
"date" : "2012-08-10"
}
},
{
"_id" : ObjectId("503e688d156562dc0cb61603"),
"exams" : {
"name" : "Hemacias",
"date" : "2012-08-09"
}
}
],
"ok" : 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment