如何在另一个集合中引用文档ID的字段上创建mongoDB索引

时间:2020-05-05 17:27:46

标签: node.js angular mongodb asynchronous indexing

目前正在开发一个Angular网站,以便在各个领域进行自我培训,我对数据库查询有一些疑问。

总结一下我的mongoDB数据库的结构,我有2个集合:

  • 一个客户,其中包含我系统中不同客户的信息。

  • 一种动物,其中包含动物的信息。除此之外,每只动物都有一个“客户”字段,其中包含代表其主人的文档ID的值。

enter image description here

我知道我可以直接将动物文档作为客户文档的属性,但是我更喜欢第一次这样做。

我的问题是关于以下请求:

exports.getbyCustomer = (req, res, next) => {
    Animal.find({customer: req.params.id}).collation({locale: "en" }).sort({'name': 1})
    .then(animals => res.status(200).send(animals))
    .catch(error => res.status(400).send({ error: error.message }));
}

当我发出此请求时,MongoDB是否会“愚蠢地”遍历动物集合的每个文档,并将传入参数的ID与当前文档之一进行比较?如果有匹配项,mongo保留它以备将来使用吗?

如果是这种情况,索引是否可以改善此行为?我读过,索引允许设置二叉树以加速数据库处理(特别是与MongoDB无关)。 是否可以使用MongoDB做到这一点?

enter image description here

通过快速阅读mongoDB文档:https://docs.mongodb.com/manual/indexes/#create-an-index

我通过简单地输入“ customer”(客户)来创建动物集合的索引:1,但我怀疑它是否会像我在上一张图片中所示。

0 个答案:

没有答案