我有一个包含相册和照片数据的数据库,相册中包含多张照片,照片也可以包含在多个相册中。
例如)
**photo collection**
photo_id album_ids
1 [11 12 13 14]
2 [11 12 15 16]
**album collection**
album_id photo_ids
11 [1 2]
12 [1 6]现在我想列出属于一个用户的所有照片(这意味着多个相册)。我能找到的方法是使用一个嵌套的for循环来获取所有的照片,将其放入一个列表中,并使用id号(这意味着时间顺序)对其进行排序。
for album in all the user's albums:
get photos belonging to this album
put it to global list
sort it有没有更简单的方法可以做到这一点?
发布于 2011-12-27 15:57:54
在没有连接逻辑的情况下,你基本上需要做两个查询:
当您有多对多关系时,这是MongoDB中的一种常见模式。在服务器上没有连接的情况下,基本上必须在客户机上编写自己的连接。
我能找到的方法是使用嵌套的
循环来获取所有照片,将其放入一个列表中,并使用id号对其进行排序(这意味着时间顺序)
对于您所拥有的结构,这基本上就是您所能做的。另外,请注意MongoDB ObjectId is not monotonically。如果要按ID排序,则必须是您自己的ID。
还要注意,您可以在album_ids字段的photos上创建索引,以加快查询速度。但是,如果您计划使用.sort()并让服务器为您排序,则该字段需要是同一索引的一部分,否则将抛出错误。
https://stackoverflow.com/questions/8640753
复制相似问题