Как создать индекс mongoDB в поле, указанном на идентификатор документа из другой коллекции - PullRequest
0 голосов
/ 05 мая 2020
• 1000
  • Один из клиентов, который содержит информацию о разных клиентах моей системы.

  • Животный, содержащий информацию о животных. В дополнение к этому, каждое животное имеет поле «покупатель» со значением идентификатора документа, который представляет его хозяина.

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 «тупо» перебирать каждый документ коллекции животных и сравнивать идентификатор, переданный в параметре, с идентификатором текущего документа? Если есть совпадение, mon go сохранить его для будущего возврата?

Если это так, могут ли индексы улучшить это поведение? Я читал, что индексы позволяют создать двоичное дерево для ускорения обработки базы данных (в частности, не относящейся к MongoDB). Есть ли способ сделать это с помощью MongoDB?

enter image description here

Быстро прочитав документацию mongoDB: https://docs.mongodb.com/manual/indexes/#create -an-index

Я создал индекс для коллекции животных, просто указав «customer»: 1, но я сомневаюсь, что он будет делать то, что я проиллюстрировал на предыдущем рисунке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...