Python pymongo:多对多映射
我有一个包含相册和照片数据的数据库,相册包含多张照片,照片也可以包含在多个相册中 (例如) 现在我想列出属于一个用户的所有照片(这意味着多个相册)。我可以找到的方法是使用一个嵌套的for循环来获取所有照片,将其放入一个列表中,并使用id编号(这意味着时间顺序)对其进行排序Python pymongo:多对多映射,python,mongodb,pymongo,Python,Mongodb,Pymongo,我有一个包含相册和照片数据的数据库,相册包含多张照片,照片也可以包含在多个相册中 (例如) 现在我想列出属于一个用户的所有照片(这意味着多个相册)。我可以找到的方法是使用一个嵌套的for循环来获取所有照片,将其放入一个列表中,并使用id编号(这意味着时间顺序)对其进行排序 有更简单的方法吗?由于无法访问连接逻辑,您基本上需要执行两个查询: 加载用户并获取他的相册列表 查询相册id位于用户相册列表中的照片 当您有多对多关系时,这是MongoDB中的常见模式。由于服务器上没有连接,您基本上必须在客户
有更简单的方法吗?由于无法访问连接逻辑,您基本上需要执行两个查询:
ObjectId
不是单调递增的。如果要按ID排序,则必须是您自己的ID
还请注意,您可以在
相册ID
字段的照片上创建索引,以加快查询速度。但是,如果您计划使用.sort()
并让服务器为您排序,则该字段必须是同一索引的一部分,否则将引发错误。照片不属于用户吗?如果将用户ID也存储在照片集合中,则会容易得多。
**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 album in all the user's albums:
get photos belonging to this album
put it to global list
sort it