gpt4 book ai didi

mongodb - 在 MongoDB 中查询多个集合的最有效方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 09:45:04 25 4
gpt4 key购买 nike

我在 MongoDB 中有 3 个集合,它们的架构无法更改。一些查询需要访问 3 个集合。

我知道我需要多次查询才能执行此操作,但我不确定执行此操作的最有效方法是什么。以下示例已简化:

我的数据包含一个“用户”集合,作为其他两个集合的逻辑父级。另外两个合集是“DVD”和“CD”。一个用户可以拥有多张 CD 或 DVD

User Document 
id : "jim",
location : "sweden"

CD Document
name : "White Album",
owner : "jim"

DVD Document
name : "Fargo",
owner : "jim"

现在,我目前采用的方法如下。如果我想为瑞典的用户取回所有 CD 和 DVD。

第一步

Get all users in Sweden and return a cursor

第 2 步

Iterate through the each user in the cursor and perform a lookup on both the DVD and CD collections to see if the users id matches the owner field

第 3 步

If it does add the user to an array to be returned

这种方法需要 2 个额外的查询,对我来说似乎效率很低。有更有效的方法吗?

最佳答案

您可以按如下方式对查询进行一些改进。

  • 选择用户时,只返回 id 字段。

db.user.find({location:"sweden"},{id:1})

  • 创建一个包含用户名的字符串列表,并使用 $in 查询传递这些列表。按如下方式对 cd 和 dvd 集合运行 $in 查询:
db.cd.find({owner : {$in : ["jim", "tom", ...]}})
db.dvd.find({owner : {$in : ["jim", "tom", ...]}})

同时在集合上添加索引以提高查询性能。

关于mongodb - 在 MongoDB 中查询多个集合的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com