Внедрение Mongoose-подобного населения для Monger: соображения производительности

Я программирую веб-бэкэнд в Clojure поверх базы данных MongoDB с Monger в качестве драйвера.

Мне действительно нравится Monger, но мне не хватает функциональности, которая показалась мне весьма полезной в драйвере Mongoose: populate метод, который позволил мне эмулировать элементарные объединения в моих запросах.

Это пошло примерно так:

  MyModel.find()
    .populate("myExternalKey")// put the name of the key to populate; Mongoose knows in which collection to look, because you have registered this property as a Ref 
    .exec();

Итак, первый вопрос: есть ли что-то подобное для Монгера или Clojure?

Я не нашел ничего, так что, предположив, что ответ - нет, вот что я планирую сделать.

Я думаю о создании служебной функции Clojure под названием my-populate со следующим использованием:

(my-populate mydoc
             {:key1 "aCollectionName"
              :key2 {:key3 "anotherCollectionName"
                     :key4 "yetAnotherCollName"}})

куда mydoc карта, представляющая документ MongoDB с внешними ссылками на другие коллекции по путям (:key1), (:key2 :key3) а также (:key2 :key4) и звонит my-populate возвращает заполненный документ (ну, скорее всего, core.async канал, содержащий его, чтобы сказать правду).

Моя стратегия состоит в том, чтобы просто сделать один запрос на поле, что не сложно сделать, но теперь я занимаюсь вопросами производительности.

Должен ли я беспокоиться о проблемах производительности этой стратегии? Есть ли какая-нибудь расширенная функциональность MongoDB, которая поможет с этим?

Может быть, тот, кто знает, что такое мангуст populate за кулисами может дать мне некоторое представление.

0 ответов

Другие вопросы по тегам