mon goose проблема внешнего ключа с node.js - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть 3 коллекции:

const LeaveSchema = new mongoose.Schema({
 employee: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }
})
const UserSchema = new mongoose.Schema({
 company: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Company'
    }
})
const CompanySchema = new mongoose.Schema({
 //
})

Как я могу получить список "листьев" "пользователей" в той же "компании"

1 Ответ

0 голосов
/ 19 февраля 2020

Я нахожу решение:

leaves = await Leave.aggregate([
        {
            "$lookup": {
                "from": "users",
                "let": { "companyId": "$employe" },
                "pipeline": [
                    { "$match": { "$expr": { "$eq": ["$_id", "$$companyId"] } } },
                    {
                        "$lookup": {
                            "from": "companies",
                            "let": { "companyId": "$company" },
                            "pipeline": [
                                { "$match": { "_id": new mongoose.Types.ObjectId(company_id),"$expr": { "$eq": ["$_id", "$$companyId"] } } }
                            ],
                            "as": "companies"
                        }
                    },
                    { "$unwind": "$companies" }
                ],
                "as": "users"
            }
        },
        { "$unwind": "$users" }
    ])
...