继续这个问题:
在MySQL中,检索相册的内容将如下所示:
SELECT photos.*, albums.album_title
FROM photos, albums_to_photos, albums
wHERE albums_to_photos.photo_id = photos.photo_id AND
albums_to_photos.album_id = albums.album_id AND
album_title = 'Family Vacation'
这将检索专辑“Family Vacation”
中所有照片的列表我想到的一种方法是创建一个名为“相册”的表格,并将所有照片的照片ID存储在值字段中。例如:
{_id:'Family Vacation',
values:'25, 512, 6172, 16923, 168253, 79185892'}
然后对每个值执行多重选择,以将照片ID查找为实际照片项目。这是一个好方法吗?
答案 0 :(得分:0)
{
"_id": ObjectId("4f30153eecd1ab7c49ded566"),
"album": "Family Vacation",
"photo": "25"
},
{
"_id": ObjectId("4f30153eecd1ab7c49ded565"),
"album": "Family Vacation",
"photo": "512"
}
单独存储每张照片,如果您想在某些时候添加更多照片信息,例如标题,则更容易管理。另请考虑使用id来引用您的相册。然后你可以做类似的事情:
- > find(array(“album”=>“Family Vacation”))
答案 1 :(得分:0)
Stur,如果我错了,请更正,但是按列过滤会进行全表扫描吗? 如果是这样,我相信Ensnare提供的解决方案可以更好地处理更大的数据。
Ensnare,假设您使用dynamodb,您可以使用Set of Integer作为照片ID,但是您需要使用每行64kb的限制。
您还可以使用相册名称作为主键,将photoid作为范围键来创建辅助索引。