Итак, теоретически это должно работать. Однако на практике вы не хотите этого делать.
Этот тип поиска открывает целую банку с червями. Например, как это работает с шардингом? Представьте, что ваш javascript включен на shard2
и пытается получить доступ к данным с shard1
, как это работает? shard2
даже не знает, что shard1
существует.
Если вы посмотрите на свой код, вы в основном пытаетесь воссоздать оператор JOIN
. Одним из условий масштабируемости MongoDB является то, что он избегает объединений, поскольку соединения b / c не масштабируются горизонтально.
Это может означать некоторую дополнительную ненормализацию или некоторую форму предварительной обработки или некоторые другие системные изменения. В идеале, если вам нужно выполнить сокращение карты для коллекции, вы должны спроектировать эту коллекцию так, чтобы она содержала все данные, необходимые для выполнения этой операции.