Cambia el tipo de campo dentro de la agregación mongoDB y ¿$ search utiliza el índice en los campos o no?

Estoy realizando uniones en mongodb usando $ lookup, ahora estoy enfrentando un problema aquí. Tengo dos colecciones, la primera que contiene, los usuarios todas las marcas de marcadores y la segunda contiene todos los detalles sobre las marcas. Ahora estoy tratando de devolver todos los detalles de las marcas marcados por el usuario.

user_bookmarked Colección

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

marcas Colección

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

Mi código de canalización de agregación se proporciona a continuación

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

Ahora, el problema al que me enfrento es que el código anterior no devuelve nada, ya que estoy almacenando los identificadores de las marcas como una cadena en mi colección de marca de usuario pero no como ObjectId, por lo que no se devuelve nada. Ahora, ¿alguien puede decirme cómo puedo cambiar el tipo de campo dentro de la consulta de agregación?

Lo segundo que quiero preguntar, por favor dígame cuando use $ lookup, entonces mongodb utiliza index en foreign_field o no. Porque corrí por encima de la tubería de agregación conexplicar: cierto pero no encontré ningún índice utilizado por la consulta anterior, la salida me lo devolvió.

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
}

Ahora, alguien puede ayudarme a salir de aquí. He buscado sobre ambas cosas, que es cómo cambiar el tipo de campo dentro de la agregación y la búsqueda de $ utiliza índices, pero no he encontrado nada útil, por favor, ayúdenme a salir de aquí. Realmente apreciable.

Respuestas a la pregunta(2)

Su respuesta a la pregunta