Alterar o tipo de campo na agregação do mongoDB e $ lookup utiliza o índice nos campos ou não?

Estou executando junções no mongodb usando $ lookup, agora estou enfrentando um problema aqui. Eu tenho duas coleções, a primeira a conter, os usuários com todas as marcas de favoritos e a segunda contém todos os detalhes sobre as marcas. Agora, estou tentando retornar todos os detalhes de marcas marcadas pelo usuário.

user_bookmarked Coleção

{"mobile_no": "8971740148", "brands": ["5829c1df334d40e20e1d1c19", "5829c1df334d40e20e1d1c20", "5829c1df334d40e20e1d1c21"]}

marcas Coleção

{"_id": ObjectId("5829c1df334d40e20e1d1c19"), "brand_name": "Versace"}
{"_id": ObjectId("5829c1df334d40e20e1d1c20"), "brand_name": "Lee Cooper"}
{"_id": ObjectId("5829c1df334d40e20e1d1c21"), "brand_name": "Levis"}

Meu código de pipeline de agregação é fornecido abaixo

                { $match: { mobile_no: mobile_no }},
                { $unwind: { path: "$brands", includeArrayIndex: "brandsposition"}},
                { $lookup: {from: "brands",localField: "brands",foreignField: "_id",as: "user_bookmarks"}},

Agora, o problema que estou enfrentando é que o código acima não retorna nada, pois estou armazenando IDs de marcas como string na minha coleção user_bookmarked, mas não como ObjectId, para que nada esteja sendo retornado. Agora alguém pode me dizer como posso alterar o tipo de campo na consulta de agregação.

Segunda coisa que eu quero perguntar, por favor me diga quando usar $ lookup, então o mongodb utiliza o index no estrangeiro_field ou não. Porque eu corri acima do pipeline de agregação comexplicar: true mas eu não encontrei nenhum índice que foi utilizado pela consulta acima, eu recebi isso retornado pela saída.

db.user_bookmarked.runCommand('aggregate', {pipeline: [{ $match: { mobile_no: mobile_no }},
            { $unwind: { path: "$brands", includeArrayIndex: "brandsposition"}},
            { $lookup: {from: "brands",localField: "brands",foreignField: "_id",as: "user_bookmarks"}}], explain: true})
{
        "waitedMS" : NumberLong(0),
        "stages" : [
                {
                        "$cursor" : {
                                "query" : {
                                        "mobile_no" : "8971740148"
                                },
                                "queryPlanner" : {
                                        "plannerVersion" : 1,
                                        "namespace" : "test.restaurants",
                                        "indexFilterSet" : false,
                                        "parsedQuery" : {
                                                "mobile_no" : {
                                                        "$eq" : "8971740148"
                                                }
                                        },
                                        "winningPlan" : {
                                                "stage" : "COLLSCAN",
                                                "filter" : {
                                                        "mobile_no" : {
                                                                "$eq" : "8971740148"
                                                        }
                                                },
                                                "direction" : "forward"
                                        },
                                        "rejectedPlans" : [ ]
                                }
                        }
                },
                {
                        "$unwind" : {
                                "path" : "$brands",
                                "includeArrayIndex" : "brandsposition"
                        }
                },
                {
                        "$lookup" : {
                                "from" : "brands",
                                "as" : "user_bookmarks",
                                "localField" : "brands",
                                "foreignField" : "_id"
                        }
                }
        ],
        "ok" : 1
}

Agora alguém pode me ajudar a sair daqui? Eu pesquisei sobre isso, que é como alterar o tipo de campo dentro da agregação e $ lookup utiliza índices, mas não encontrei nada útil, por favor me ajude a sair daqui pessoal. realmente apreciável.

questionAnswers(2)

yourAnswerToTheQuestion