Используя mongodb lingo, ваши коллекции могут выглядеть следующим образом:
photos = [
{
_id: ObjectId(...),
title: "...",
date_uploaded: Date(...),
albums: [
ObjectId(...),
...
]
},
...
]
albums = [
{
_id: ObjectId(...),
title: "..."
}
]
Найти 5 новых фотографий можно было бы следующим образом:
> var latest = db.photos.find({}).sort({date_uploaded:1}).limit(5);
Нет серверных объединений вМонго, так что тебе нужно будет взять все последние альбомы, как это:
> var latest_albums = latest.find({}, {albums: 1});
Конечно, тогда тебе нужно свести это в набор.
Это на самом деле проще, если тыПросто вставьте альбом в фотодокументы, так как они маленькие:
photos = [
{
_id: ObjectId(...),
title: "...",
date_uploaded: Date(...),
albums: [
{name: "family-vacation-2011", title: "My family vacation in 2010"},
...
]
},
...
]
Тогда запрос такой же, но вам не нужно присоединяться.Поиск всех фотографий в альбоме выглядит следующим образом:
> db.photos.find({albums:{$elemMatch:{name: "family-vacation-2011"}}});