Является ли Javascript каждый раз свежим?
В значительной степени.MongoDB имеет только один «экземпляр javascript» на каждый запущенный экземпляр MongoDB.Вы заметите это, если попытаетесь запустить два разных Map / Reduces одновременно.
Будет ли производительность в порядке?
Очевидно, здесь есть разные определения «ОК».Предложение $where
не может использовать индексы.Вы можете объединить это предложение с другим индексированным запросом.В любом случае каждый объект должен быть перенесен из BSON во время выполнения Javascript, а затем включен во время выполнения.
Процесс определенно не тот, который вы бы назвали "перформантом".Конечно, по этой мере Map / Reduce также не очень эффективен, и люди используют его в производственных системах.
Это разумная основа для построения запросов?
Настоящим препятствием здесь является не количество строк в коде, а количество возможных документов, которые этот код будет интерпретировать.Несмотря на то, что это «серверный» javascript, сервер все равно должен выполнить кучу работы.(в одном потоке, в интерпретируемой среде)
Если вы можете проверить его и правильно определить его область, это вполне может сработать.Только не жди чудес.