Допустим, у меня есть структура, которую можно реализовать в одной коллекции users, содержащей информацию о пользователе + вложенный массив clusters, который, в свою очередь, содержит информацию о кластере и очередной вложенный массив bots, который содержит информацию о ботах кластера и так далее.
1. Стоит ли это реализовывать в виде одной коллекции с десятиуровневым массивом, получая лишь нужные выходные данные с помощью $filter, или это не MongoDB-way и всё-таки имеет смысл делать несколько коллекций с разными типами данных, содержащих ObjectID родственных документов?
2. Может быть существует иная NoSQL база данных, которая больше подходит под подобные структуры?
Логично и можно строить сложные структуры в монге.
Но имхо, стоит брать какой-нибудь фреймворк для этого.
Например, в python есть фреймворк mongoengine.org
pcdesign, коллекция пользователей. Каждый пользователь, кроме своих свойств, имеет массив кластеров. Каждый кластер, кроме своих свойств, имеет массив ботов. Каждый бот, кроме своих свойств, имеет массивы команд и задач.
Это получается всего одна коллекция, либо имеет смысл выделить кластеры/боты в другие коллекции?
pcdesign, потому что с использованием коллекций мне придется очень запарится с агрегацией, когда мне, например, нужно будет поискать все задачи всех ботов за текущую минуту.
Если использовать mongoengine, то не проблема разбивать на коллекции, а потом одним запросом соединять воедино и получить выборку, но к mongoengine надо привыкнуть, если раньше использовали ORM, то быстро разберетесь, если нет то тогда понадобится время.