Person p RJOIN Has (Car c, Insurance i)

[]
    {
        _id: 1,
        name: João Vitor,
        data_Has: [
            {
                hasId: "has1",
                fCarId: "Onix",
                fInsuranceId: 1001
            },
            {
                hasId: "has2",
                fCarId: "Onix",
                fInsuranceId: 1002
            },
            {
                hasId: "has3",
                fCarId: "Celta",
                fInsuranceId: 1003
            },
            {
                hasId: "has4",
                fCarId: "Celta",
                fInsuranceId: 1004
            }
        ]
    },
    // outras pessoas
]







DocTypeHas < Has*, Person, Car, Insurance >
{
    _id         : string    < Has.id >
    fPersonId   : string    < Person.id >
    fCarId      : string    < Car.id >
    fInsuranceId: string[]  < Insurance.id >
}

Person p RJOIN Has (Car c, Insurance i)

[
    {
        _id: 1,
        name: João Vitor,
        data_Has: [
            {
                hasId: "has1",
                fCarId: "Onix",
                data_Insurance: [
                    {
                        _id: 1001,
                    },
                    {
                        _id: 1002,
                    },

                ]
            },
            {
                hasId: "has2",
                fCarId: "Celta",
                data_Insurance: [
                    {
                        _id: 1003
                    },
                    {
                        _id: 1004
                    },
                ]
            }
        ]
    },
    // outras pessoas
]






Person p RJOIN Has (Car c, Insurance i)

[
    {
        _id: 1,
        name: João Vitor,
        data_Has: [
            {
                hasId: "has1",
                fCarId: "Onix",
                fInsuranceId: 1001
            },
            {
                hasId: "has2",
                fCarId: "Onix",
                fInsuranceId: 1002
            },
            {
                hasId: "has3",
                fCarId: "Celta",
                fInsuranceId: 1003
            },
            {
                hasId: "has4",
                fCarId: "Celta",
                fInsuranceId: 1004
            }
        ]
    },
    // outras pessoas
]







DocTypeHas < Has*, Person, Car, Insurance >
{
    _id         : string    < Has.id >
    fPersonId   : string    < Person.id >
    fCarId      : string    < Car.id >
    fInsuranceId: string[]  < Insurance.id >
}

Person p RJOIN Has (Car c, Insurance i)

[
    {
        _id: 1,
        name: João Vitor,
        data_Has: [
            {
                hasId: "has1",
                fCarId: "Onix",
                data_Insurance: [
                    {
                        _id: 1001,
                    },
                    {
                        _id: 1002,
                    },

                ]
            },
            {
                hasId: "has2",
                fCarId: "Celta",
                data_Insurance: [
                    {
                        _id: 1003
                    },
                    {
                        _id: 1004
                    },
                ]
            }
        ]
    },
    // outras pessoas
]