sql >> Base de Datos >  >> NoSQL >> MongoDB

¿El campo Extranjero de $búsqueda podría ser el campo del documento anidado?

No hay un operador posicional para $búsqueda, pero puede usar una pipeline personalizada en MongoDB 3.6 para definir la combinación personalizada consultas">condiciones :

db.history.aggregate([
    {
        $lookup: {
            from: "childsgroup",
            let: { child_id: "$child_id" },
            pipeline: [
                { $match: { $expr: { $in: [ "$$child_id", "$childs.id" ] } } },
                { $unwind: "$childs" },
                { $match: { $expr: { $eq: [ "$childs.id", "$$child_id" ] } } },
                { $replaceRoot: { newRoot: "$childs" } }
            ],
            as: "childInfo"
        }
    }
])

Primera $match agregado para mejorar el rendimiento:queremos encontrar solo aquellos documentos de childsgroup que contienen child_id coincidentes y luego podemos hacer coincidir los subdocumentos después de $unwind escenario.