目前正在开发一个Angular网站,以便在各个领域进行自我培训,我对数据库查询有一些疑问。
总结一下我的mongoDB数据库的结构,我有2个集合:
一个客户,其中包含我系统中不同客户的信息。
一种动物,其中包含动物的信息。除此之外,每只动物都有一个“客户”字段,其中包含代表其主人的文档ID的值。
我知道我可以直接将动物文档作为客户文档的属性,但是我更喜欢第一次这样做。
我的问题是关于以下请求:
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做到这一点?
通过快速阅读mongoDB文档:https://docs.mongodb.com/manual/indexes/#create-an-index
我通过简单地输入“ customer”(客户)来创建动物集合的索引:1,但我怀疑它是否会像我在上一张图片中所示。