Приведенный список пользователей с каждым пользователем имеет свои встроенные проекты (с отметкой времени). Как получить список пользователей вместе с их последними проектами?
например:
{"_id" : ObjectId("4dcc2a5b3db44135cf000004"),
"name" : "User1",
"projects" : [
{"created_at" : ISODate("2011-05-13T08:16:22Z"),
"_id" : ObjectId("4dcce8d63db4410f04000001"),
"name" : "User1 Project 1"
},
{"created_at" : ISODate("2011-05-13T08:16:22Z"),
"_id" : ObjectId("4dcce8d63db4410f04000002"),
"name" : "User1 Project 2"
}
]
}
{"_id" : ObjectId("4dcc2fed3db44135cf000007"),
"name" : "User2",
"projects" : [
{"created_at" : ISODate("2011-05-13T09:36:33Z"),
"_id" : ObjectId("4dccfba13db4410f68000001"),
"name" : User2 Project 2"
}
]
}
Я хочу отобразить эти данные в виде таблицы:
| имя пользователя | название последнего проекта |
Я понял, что используя mongoid, я могу сделать что-то вроде
users = User.all
users.each do | user |
p user.name
p user.latest_project_name
end
with latest_project_name as :
def latest_project_name
self.projects.desc(:created_at).try(:name) || ''
end
вопрос:
1. Будет ли это ввести n + 1 проблемы, как в SQL?
2. как, если я хочу отсортировать таблицу по последнему названию проекта? Могу ли я сделать это внутри mongodb? или мне нужно сделать Array.sort?
примечание: я довольно новичок в mongodb, так что это может быть проблемой дизайна. Все еще выясняю, как думать в mongodb.