Мангуст запрашивает глубоко заполненное поле

#node.js #mongodb #mongoose

Вопрос:

У меня есть схема модели, называемая схемой темы, которая содержит поле с именем parent, это ссылка на одну и ту же сущность «тема», в некоторых случаях это создает несколько уровней родства, поэтому мне нужно сделать запрос, который считывает идентификатор родителя, включенный в идентификатор родителя определенной темы. Я знаю, что это может показаться сложным, но это так же просто, как запрос с фильтром «родитель.родитель». Это модель и запрос, который я хочу сделать, но я не получаю ожидаемого результата:

 const topicSchema = new Schema
(
    {
        name: 
        {
            type:String,
            unique:true
        },
        description: 
        {
            type:String
        },
        parent: 
        {
            type: Schema.ObjectId,
            ref:'Topic'
        }
    }
)

async function getAllTopicChildren(topic)
{

        const topicChildren = await Topic.find( {
        $or:
        [
            {parent:topic},
            {'parent.parent':topic},
            {'parent.parent.parent':topic},
            {'parent.parent.parent.parent':topic},
        ]
    }).populate({path:'parent',populate:{path:'parent'}})
        try 
        {
            if(!topicChildren)
            {
                throw new Error('there are no topics')
            }
            else
            {
                return topicChildren
            }
        } 
        catch (error) 
        {
            throw new Error(error.message)
        }
    
}