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