Агрегирование, если локальное поле существует в чужом поле - PullRequest
0 голосов
/ 11 марта 2019

Я использую MeteorJS.Сейчас я пытаюсь получить данные, используя метод вызова метеора.Работает хорошо.Но у меня есть $lookup для агрегации, он также работает нормально.Теперь я пытаюсь получить данные только по уникальным, не нужно дублировать.

[![Meteor.methods({
        allIndications(someId) {
            const indications = Promise.await(
                Medicines.aggregate(\[
                    {
                        $lookup: {
                            from: "indications",
                            localField: "medicine_indications",
                            foreignField: "_id",
                            as: "AllIndications"
                        }
                    },
                    {
                        $unwind: {
                            path: "$AllIndications",
                            preserveNullAndEmptyArrays: true
                        }
                    },

                    { $project: { _id: 1, AllIndications: 1 } }
                \]).toArray()
            );
            return indications;
        }
    });][1]][1]

enter image description here

1 Ответ

0 голосов
/ 24 июля 2019

Вы можете попробовать это

[![Meteor.methods({
    allIndications(someId) {
        const indications = Promise.await(
            Medicines.aggregate(\[
                {
                    $lookup: {
                        from: "indications",
                        localField: "medicine_indications",
                        foreignField: "_id",
                        as: "AllIndications"
                    }
                },
                {
                    $unwind: {
                        path: "$AllIndications",
                        preserveNullAndEmptyArrays: true
                    }
                },
                {
                     $group:{
                         _id:null,
                         AllIndications:{$addToSet: "$AllIndications"}
                     }
                },
                { $project: { _id: 1, AllIndications: 1 } }
            \]).toArray()
        );
        return indications;
    }
});][1]][1]
...