MongoDB -直接查询唯一索引而不是集合

7cwmlq89  于 2023-03-29  发布在  Go
关注(0)|答案(1)|浏览(161)

bounty将在12小时后到期。回答此问题可获得+50声望奖励。Dimitar Spasovski正在寻找来自信誉良好的来源的答案

寻找直接查询MongoDB索引的方法,而不是索引所属的集合。
例如,这里有两个集合:
用户:

{
id: ObjectId(),
username: string
...
}

特殊用户:

{
id: ObjectId(),
specialUsername: string
...
}

现在,假设SpecialUser.specialUsername字段上有一个唯一索引。
我们希望找到所有在SpecialUser.specialUsername字段中出现其用户名的User文档的ID。
现在,我们可以通过以下查询轻松地做到这一点:

db.User.aggregate([ 
  { $lookup: {from: "SpecialUser", localFieldName: "username", foreignField: "specialUsername", as "spUser"} }, 
  { $unwind: { path: "$spUser", preserveNullAndEmptyArrays: false} }, 
  { $project: {_id: 1}}
])

然而,在这个特定的例子中,我们使用了一个查找,因此获取了SpecialUser集合,尽管我们不需要来自该特定集合的任何信息。
对于这种特殊情况,是否可以直接使用唯一索引而不是$lookup操作?

bq3bfh9z

bq3bfh9z1#

对于这种特殊情况,是否可以直接使用唯一索引而不是$lookup操作?
你怎么知道这个唯一的索引没有被它使用呢?你可以尝试“解释”并检查输出。
考虑到查找查询只使用索引字段,我假设(当然需要验证)它是一个覆盖查询,这意味着只检查索引树,并且在该阶段不进行磁盘提取。
这篇文章可能是相关的

相关问题