如何通过MongoDB中的_ids高效查找多个项目?

时间:2016-03-15 07:50:53

标签: python mongodb pymongo

假设我有一个包含两个集合的MongoDB数据库 - “fruits”和“baskets”。除了名称之外,每种水果都有很多信息,例如卡路里,原产国等等。

篮子基本上只是一组水果,即除了篮子的属性外,每个篮子项目都有一个FRUIT_ARRAY字段,用于保存水果的_id个。为简单起见,假设每个水果只能属于一个篮子。

现在有人给了我一个篮子_id,我需要尽可能高效地提取相应的水果记录及其所有细节。我的问题是 - 有没有比这更有效的方法(我使用python包装器与MongoDB进行交互,称为pymongo):

basket = db['baskets'].find_one({'_id':basket_id})
fruits = db['fruits'].find({'_id':{'$in':basket[FRUIT_ARRAY]}})

鉴于我必须为集合中的每个篮子做这件事,我怎样才能使这个程序更有效率?我听说过批量操作,但据我所知,它们只是关于数据库的更新。

1 个答案:

答案 0 :(得分:0)

由于basketsfruits是不同的集合,因此它们不相关。您可以通过集合边界查询两个查询。